class AdtekioAdnetworks::Revenue::Applovin

Constants

BaseUrl
ReportColumns

Public Instance Methods

data(params) click to toggle source
# File lib/adtekio_adnetworks/importers/revenue/applovin.rb, line 39
def data(params)
  cipher_suit_backup = OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ciphers]

  uri = Addressable::URI.parse(BaseUrl)
  uri.query_values = params

  OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ciphers] =
    'HIGH:MEDIUM:!ADH:!EDH:!DHE'

  http = Net::HTTP.new(uri.hostname, 443)
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  http.use_ssl = true

  request = Net::HTTP::Get.new uri.request_uri
  response = http.request(request)
  JSON.parse(response.body, :symbolize_names => true)[:results]
ensure
  OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ciphers] = cipher_suit_backup
end
report(from, to) click to toggle source
# File lib/adtekio_adnetworks/importers/revenue/applovin.rb, line 27
def report(from, to)
  @report ||= data({ :api_key     => credentials.api_key,
                     :start       => from.strftime("%Y-%m-%d"),
                     :end         => to.strftime("%Y-%m-%d"),
                     :format      => :json,
                     :columns     => ReportColumns,
                     :report_type => :publisher,
                   }).group_by do |row|
    [row[:package_name], row[:ad_type], Date.parse(row[:day])]
  end
end
revenues(from, to) click to toggle source
# File lib/adtekio_adnetworks/importers/revenue/applovin.rb, line 11
def revenues(from, to)
  report(from, to).map do |(package, ad_type, date), values|
    osv = values.map{ |a| OpenStruct.new(a) }

    {
      :impressions => osv.map(&:impressions).map(&:to_i).sum,
      :clicks      => osv.map(&:clicks).map(&:to_i).sum,
      :amount      => osv.map(&:revenue).map(&:to_f).sum,
      :date        => date,
      :appname     => package,
      :not_matched => not_matched(:ad_type => ad_type,
                                  :platform => osv.map(&:platform).join(","))
    }
  end
end