class AdtekioAdnetworks::Cost::Applifier
Constants
- DateSteps
Public Instance Methods
campaign_costs(from,till)
click to toggle source
# File lib/adtekio_adnetworks/importers/cost/applifier.rb, line 41 def campaign_costs(from,till) csv_options = { :col_sep => ",", :quote_char => '"', :headers => :first_row, } from.step(till, DateSteps).map do |start_date| end_date = [start_date + DateSteps, till].min CSV.new(csv_data(start_date, end_date), csv_options).to_a.map do |row| country = row["Country code"].try(:downcase) { :date => Date.strptime(row["Date"], '%Y-%m-%d'), :campaign => row["Target name"], :impressions => row["views"].to_i, :clicks => row['clicks'].to_i, :conversions => row['installs'].to_i, :amount => row['spend'].to_f, :target_country => country[0..1], } end.compact end.flatten end
csv_data(from, till)
click to toggle source
# File lib/adtekio_adnetworks/importers/cost/applifier.rb, line 10 def csv_data(from, till) uri = Addressable::URI. parse("https://gameads-admin.applifier.com/stats/acquisition-api") uri.query_values = { :apikey => credentials.api_key, :scale => "day", :start => from.strftime("%Y-%m-%dT%H:%M:%S.000Z"), :end => till.strftime("%Y-%m-%dT%H:%M:%S.000Z"), :fields => "views,clicks,installs,spend", :splitBy => "campaign,country", } req = Net::HTTP::Get.new(uri.request_uri) res = Net::HTTP.start(uri.host, uri.port, :use_ssl => true, :verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http| http.request(req) end if res.code =~ /3../ uri = Addressable::URI.parse(res.header["Location"]) req = Net::HTTP::Get.new(uri.request_uri) Net::HTTP.start(uri.host, uri.port, :use_ssl => true, :verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http| http.request(req) end.body else res.body end end