class AdtekioAdnetworks::Cost::Applift

Constants

DateSteps

Public Instance Methods

campaign_costs(from, till) click to toggle source
# File lib/adtekio_adnetworks/importers/cost/applift.rb, line 10
def campaign_costs(from, till)
  from.step(till, DateSteps).map do |start_date|
    end_date = [start_date + DateSteps - 1, till].min
    uri = Addressable::URI.
      parse("https://partner.applift.com/stats/stats.json")

    uri.query_values = {
      :api_key     => credentials.api_key,
      :start_date  => start_date.strftime("%Y-%m-%d"),
      :end_date    => end_date.strftime("%Y-%m-%d"),
      'group[]'    => ["Offer.name", "Stat.date"]
    }

    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)['data'].reject do |campaign|
      campaign["cost"] == "$0.00" || campaign["offer"].blank?
    end.map do |campaign|
      {
        :date         => Date.parse(campaign['date']),
        :campaign     => campaign['offer'].gsub(/(, private)/i,'').gsub(/( private)/i,'').gsub(/(, rtl2 private)/i,''),
        :conversions  => campaign['conversions'].to_i,
        :amount       => campaign['cost'].tr(',$','').to_f
      }
    end
  end.flatten
end