class AdtekioAdnetworks::Cost::Revmob

Public Instance Methods

campaign_costs(from, till) click to toggle source
# File lib/adtekio_adnetworks/importers/cost/revmob.rb, line 8
def campaign_costs(from, till)
  url = "https://www.revmobmobileadnetwork.com/api/v1/users"+
    "/#{credentials.user_id}/auth/#{credentials.auth_token}/campaigns"+
    "/report.json"

  uri = Addressable::URI.parse(url)
  uri.query_values = {
    :startDate    => from.strftime("%Y-%m-%d"),
    :endDate      => till.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
  raise 'could not load report' if res.code.to_i != 200

  campaigns = JSON(res.body)["campaigns"]
  campaigns.reject! do |camp|
    camp["daily_activities"].detect {|x| x["spend"].to_f > 0}.nil?
  end

  campaigns.map do |camp|
    camp["daily_activities"].map do |d|
      {
        :campaign    => camp["name"],
        :date        => Date.parse(d["day"]),
        :impressions => d["impressions"].to_i,
        :clicks      => d["clicks"].to_i,
        :conversions => d["installs"].to_i,
        :amount      => d["spend"].to_f
      }
    end
  end.flatten.compact
end