class AdtekioAdnetworks::Cost::Vungle

Public Instance Methods

campaign_costs(from, till) click to toggle source
# File lib/adtekio_adnetworks/importers/cost/vungle.rb, line 25
def campaign_costs(from, till)
  campaign_ids = load_campaign_ids
  from.upto(till).map do |date|
    campaign_ids.map do |id|
      sleep 0.11 # max 100 requests per 10 seconds are allowed
      uri = Addressable::URI.
        parse("https://ssl.vungle.com/api/campaigns/#{id}")

      uri.query_values = {
        :key  => credentials.api_key,
        :date => date.strftime("%Y-%m-%d"),
      }

      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).map do |campaign|
        next if campaign[:dailySpend].to_f == 0
        {
          :date        => date,
          :campaign    => campaign[:name],
          :amount      => campaign[:dailySpend].to_f,
          :impressions => campaign[:impressions].to_i,
          :clicks      => campaign[:clicks].to_i,
          :conversions => campaign[:installs].to_i
        }
      end.compact
    end
  end.flatten
end
load_campaign_ids() click to toggle source
# File lib/adtekio_adnetworks/importers/cost/vungle.rb, line 8
def load_campaign_ids
  uri = Addressable::URI.parse("https://ssl.vungle.com/api/campaigns")
  uri.query_values = {
    :key => credentials.api_key,
  }

  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).map do |campaign|
    campaign[:campaignId]
  end
end