class Hyrb::Tasks::Developers::Download

Public Instance Methods

run(env) click to toggle source
# File lib/hyrb/tasks/developers.rb, line 35
def run(env)
  response = Faraday.post "https://accounts.google.com/o/oauth2/token",
    refresh_token: env.creds.google_refresh_token,
    client_id:     env.creds.google_client_id,
    client_secret: env.creds.google_client_secret,
    grant_type:    "refresh_token"

  access_token = JSON.parse(response.body)['access_token']
  seeder = GoogleDocSeed.new(access_token)
  csv_string = seeder.to_csv_string(env.creds.google_spreadsheet_key)

  csv = CSV.parse(csv_string, GoogleCSVConverters::CSV_SETTINGS)

  env.developers = Hyrb::Models::Cache::Developers.new
  env.developers.data = csv.map do |row|
    pks = []
    while true
      field = row.delete(:public_key)
      if field.length > 1
        pks << field[1] if field[1]
      else
        break
      end
    end

    Hyrb::Models::Developer.new({
      name:            row[:name],
      email:           row[:email],
      role:            Hyrb::Models::Developer::ROLE_MAP[row[:role].to_i],
      github_username: row[:github],
      keys:            pks,
    }) if row[:role].to_i < 4 && row[:email]
  end.compact

  env.developers.save!
  say "Developer data downloaded", :green
end