class AdopsReportScrapper::IndexexchangeClient

Public Instance Methods

before_quit_with_error() click to toggle source
# File lib/adops_report_scrapper/indexexchange_client.rb, line 15
def before_quit_with_error
end
date_supported?(date = nil) click to toggle source
# File lib/adops_report_scrapper/indexexchange_client.rb, line 6
def date_supported?(date = nil)
  _date = date || @date
  return true if _date < (Date.today + 1)
  false
end
init_client() click to toggle source
# File lib/adops_report_scrapper/indexexchange_client.rb, line 12
def init_client
end

Private Instance Methods

scrap() click to toggle source
# File lib/adops_report_scrapper/indexexchange_client.rb, line 20
def scrap
  date_str = @date.strftime('%Y-%m-%d')

  response = RestClient.post 'https://auth.indexexchange.com/auth/oauth/token', { 'username' => @login, 'key' => @secret }.to_json, { 'Content-Type' => 'application/json; charset=utf-8' }
  access_token = JSON.parse(response)['data']['accessToken']

  header = { 'Authorization' => "Bearer #{access_token}", 'Content-Type' => 'application/json; charset=utf-8' }

  response = RestClient.post 'https://api01.indexexchange.com/api/publishers/sites', '', header
  site_tag_map = JSON.parse(response)['data'].map { |e| [e['siteID'], e['name']] }.to_h

  response = RestClient.post 'https://api01.indexexchange.com/api/publishers/stats/earnings/open', { 'filters' => { 'startDate' => date_str, 'endDate' => date_str }, 'aggregation' => 'siteID' }.to_json, header
  data = JSON.parse(response)['data'].each do |datum|
    datum['siteTagName'] = site_tag_map[datum['aggregateID']]
  end

  unless data[0]
    @data = []
    return
  end
  header = data[0].keys
  @data = [header]
  @data += data.map do |datum|
    header.map { |key| datum[key] }
  end
end