class AdtekioAdnetworks::Cost::Tapjoy

Public Instance Methods

campaign_costs(from, till) click to toggle source
# File lib/adtekio_adnetworks/importers/cost/tapjoy.rb, line 8
def campaign_costs(from, till)
  from.upto(till).map do |date|

    uri = Addressable::URI.
      parse("https://api.tapjoy.com/reporting_data.json")

    uri.query_values = {
      :email    => credentials.username,
      :api_key  => credentials.api_key,
      :date     => date.strftime('%Y-%m-%d'),
      :timezone => 0
    }

    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

    JSON.parse(res.body, :symbolize_names => true)
  end.map do |report|
    report[:Apps].map do |campaign|
      next if campaign[:Spend].to_f == 0
      next if campaign[:Name] =~ /free/i
      {
        :date        => Date.parse(report[:Date]),
        :campaign    => campaign[:Name],
        :clicks      => campaign[:PaidClicks].to_i,
        :conversions => campaign[:PaidInstalls].to_i,
        :amount      => campaign[:Spend].to_f.abs
      }
    end
  end.flatten
end