Sha256: 28c7dee59d21a9729f241ec14ba9edf5b3a59b41bea33360c4230f53e064957d

Contents?: true

Size: 1.9 KB

Versions: 29

Compression:

Stored size: 1.9 KB

Contents

require 'date'
require_relative 'base_client'
require 'google/api_client'
require 'google/api_client/service'
require 'google/api_client/client_secrets'
require 'google/api_client/auth/file_storage'
require 'google/api_client/auth/installed_app'
require 'csv'

# require option with network_id to be passed into constructor
class AdopsReportScrapper::AdxClient < AdopsReportScrapper::BaseClient
  API_NAME = 'adexchangeseller'
  API_VERSION = 'v2.0'
  CREDENTIAL_STORE_FILE = "#{API_NAME}-oauth2.json"
  API_SCOPE = 'https://www.googleapis.com/auth/adexchange.seller.readonly'

  def date_supported?(date = nil)
    _date = date || @date
    return true if _date < Date.today
    false
  end

  private

  def init_client
    fail 'please specify adx account id' unless @options['account_id']
    @account_id = @options['account_id']
    authorization = nil

    file_storage = Google::APIClient::FileStorage.new(CREDENTIAL_STORE_FILE)
    if file_storage.authorization.nil?
      flow = Google::APIClient::InstalledAppFlow.new(
        :client_id => @login,
        :client_secret => @secret,
        :scope => [API_SCOPE]
      )
      authorization = flow.authorize(file_storage)
    else
      authorization = file_storage.authorization
    end

    @client = Google::APIClient::Service.new(API_NAME, API_VERSION,
      {
        :application_name => "Ruby #{API_NAME} ad report scrapper",
        :application_version => '1.0.0',
        :authorization => authorization
      }
    )
  end

  def scrap
    date_str = @date.strftime('%Y-%m-%d')
    result = @client.accounts.reports.generate(
        :accountId => @account_id,
        :startDate => date_str,
        :endDate => date_str,
        :metric => ['AD_REQUESTS', 'AD_IMPRESSIONS', 'CLICKS', 'EARNINGS'],
        :dimension => ['DATE', 'DFP_AD_UNITS', 'DFP_AD_UNIT_ID', 'COUNTRY_CODE', 'PLATFORM_TYPE_NAME'],
        :alt => 'csv').execute
    @data = CSV.parse(result.body)
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
adops_report_scrapper-0.1.32 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.31 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.30 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.29 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.28 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.27 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.26 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.25 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.24 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.23 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.22 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.21 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.20 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.19 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.18 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.17 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.16 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.15 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.14 lib/adops_report_scrapper/adx_client.rb
adops_report_scrapper-0.1.13 lib/adops_report_scrapper/adx_client.rb