class AdtekioAdnetworks::Revenue::Supersonic
Constants
- BASE_URL
Public Instance Methods
http_client()
click to toggle source
# File lib/adtekio_adnetworks/importers/revenue/supersonic.rb, line 49 def http_client @http_client ||= Net::HTTP::Persistent.new('supersonic').tap do |client| client.verify_mode = OpenSSL::SSL::VERIFY_NONE end end
report(from,to)
click to toggle source
# File lib/adtekio_adnetworks/importers/revenue/supersonic.rb, line 41 def report(from,to) CSV(ultra_data(from,to), :col_sep => ",", :headers => true ).map do |a| OpenStruct.new(a.to_h) end[0..-2].group_by do |a| ## last line is a summary row, ignore it. [a.applicationName, a.applicationId, a.providerName, a.theDate] end end
revenues(from, to)
click to toggle source
# File lib/adtekio_adnetworks/importers/revenue/supersonic.rb, line 10 def revenues(from, to) report(from,to).map do |(appname, appid, providerName, date), values| values.map do |dpt| # we assume: impressions == clicks, strange but true! if dpt.impressions != dpt.clicks raise "impressions didn't match clicks: "+ "#{dpt.impressions}/#{dpt.clicks}" end nmstuff = { :provider => providerName, :appid => appid, :uniqUser => dpt.uniqueUsers.remove(',').to_i, :uniqPayingUsers => dpt.uniquePayingUsers.remove(',').to_i, :rewards => dpt.rewards.remove(',').to_i, } { :date => Date.strptime(date, "%Y-%m-%d"), :appname => appname, :amount => dpt.revenue.remove('$').to_f, :requests => dpt.hits.remove(',').to_i, :impressions => dpt.fulfillments.remove(',').to_i, :clicks => dpt.clicks.remove(',').to_i, :completions => dpt.completions.remove(',').to_i, :not_matched => not_matched(nmstuff) } end end.flatten end
ultra_data(from_date, to_date)
click to toggle source
# File lib/adtekio_adnetworks/importers/revenue/supersonic.rb, line 55 def ultra_data(from_date, to_date) http_client.request(ultra_url(from_date, to_date)).body end
ultra_url(from_date, to_date)
click to toggle source
# File lib/adtekio_adnetworks/importers/revenue/supersonic.rb, line 59 def ultra_url(from_date, to_date) uri = Addressable::URI.new uri.query_values = { :accessKey => credentials.access_key, :secretKey => credentials.secret_key, :onlyRevenue => 0, :fromDate => from_date.strftime("%Y-%m-%d"), :toDate => to_date.strftime("%Y-%m-%d"), :format => "csv", "breakdowns[]" => ["date", "application", "provider"] } URI.parse("%s?%s" % [BASE_URL, uri.query]) end