class AdtekioAdnetworks::Cost::Adquant

Constants

API_ENDPOINT
AUTH_ROUTE
DATA_ROUTE

Public Instance Methods

campaign_costs(from, till) click to toggle source
# File lib/adtekio_adnetworks/importers/cost/adquant.rb, line 12
def campaign_costs(from, till)
  load_data.map do |campaign_data|
    campaign_name = campaign_data[:fcg_name]
    adgroup_name  = campaign_data[:fbc_name].
      sub(/(#{Regexp.escape(campaign_name)}_)/i, "").sub('%) ', '_')
    ad_name       = campaign_data[:fba_name].
      sub(/(#{Regexp.escape(campaign_name)}_#{Regexp.escape(adgroup_name)}_)/i, "")

    {
      :date         => Date.parse(campaign_data[:date]).to_s,
      :campaign     => campaign_name,
      :adgroup      => adgroup_name,
      :ad           => ad_name,
      :impressions  => campaign_data[:fb_unique_imps],
      :clicks       => campaign_data[:fb_unique_clicks],
      :conversions  => campaign_data[:conversion],
      :amount       => campaign_data[:dst_amount][:USD]
    }
  end.select { |d| (from..till).include?(Date.parse(d[:date])) }
end

Private Instance Methods

api_token() click to toggle source
# File lib/adtekio_adnetworks/importers/cost/adquant.rb, line 46
def api_token
  @api_token ||= begin
                   params = {
      :usr_email => credentials.username,
      :usr_pwd   => credentials.password
    }
                   response_json = make_request(params, AUTH_ROUTE)
                   response_json[:token]
                 end
end
load_data() click to toggle source
# File lib/adtekio_adnetworks/importers/cost/adquant.rb, line 35
def load_data
  params = {
    :token    => api_token,
    :groups   => ["cpn_id", "fcg_id", "fbc_id", "fba_id", "date"].to_json,
    :values   => ["cpn_id", "fcg_id", "fbc_id", "fba_id", "date", "dst_amount",
                  "act_action_date", "conversions", "fb_unique_imps",
                  "fb_unique_clicks", "cpn_title"].to_json,
  }
  make_request(params, DATA_ROUTE)[:rowset]
end
make_request(params, route) click to toggle source
# File lib/adtekio_adnetworks/importers/cost/adquant.rb, line 57
def make_request(params, route)
  response = ::RestClient::Request.
    execute(method:       :post,
            content_type: 'application/json',
            url:          "#{API_ENDPOINT}#{route}",
            payload:      params,
            headers:      {"Accept-Encoding" => "deflate"},
            ssl_version:  :SSLv23)

  JSON.parse(response.to_str, :symbolize_names => true)[:data]
end