class Blurb::ReportRequests

Constants

SD_TACTIC

Public Class Methods

new(campaign_type:, base_url:, headers:) click to toggle source
# File lib/blurb/report_requests.rb, line 7
def initialize(campaign_type:, base_url:, headers:)
  @campaign_type = campaign_type
  @base_url = "#{base_url}/v2/#{@campaign_type}"
  @headers = headers
end

Public Instance Methods

create( record_type:, report_date: Date.today, metrics: nil, segment: nil ) click to toggle source
# File lib/blurb/report_requests.rb, line 13
def create(
  record_type:,
  report_date: Date.today,
  metrics: nil,
  segment: nil
)
  # create payload
  metrics = get_default_metrics(record_type.to_s.underscore.to_sym, segment) if metrics.nil?
  payload = {
    metrics: metrics.map{ |m| m.to_s.camelize(:lower) }.join(","),
    report_date: report_date
  }
  payload[:segment] = segment if segment
  payload[:tactic] = SD_TACTIC if @campaign_type.to_sym == :sd

  execute_request(
    api_path: "/#{record_type.to_s.camelize(:lower)}/report",
    request_type: :post,
    payload: payload
  )
end
download(report_id) click to toggle source
# File lib/blurb/report_requests.rb, line 42
def download(report_id)
  execute_request(
    api_path: "/reports/#{report_id}/download",
    request_type: :get,
  )
end
retrieve(report_id) click to toggle source
# File lib/blurb/report_requests.rb, line 35
def retrieve(report_id)
  execute_request(
    api_path: "/reports/#{report_id}",
    request_type: :get,
  )
end

Private Instance Methods

get_default_metrics(record_type, segment = nil) click to toggle source
# File lib/blurb/report_requests.rb, line 51
def get_default_metrics(record_type, segment = nil)
  if @campaign_type == CAMPAIGN_TYPE_CODES[:sb]
    return [
      "campaignId",
      "impressions",
      "clicks",
      "cost",
      "attributedSales14d",
      "attributedSales14dSameSKU",
      "attributedConversions14d",
      "attributedConversions14dSameSKU"
    ] if record_type == :campaigns
    return [
      "adGroupId",
      "campaignId",
      "impressions",
      "clicks",
      "cost",
      "attributedSales14d",
      "attributedSales14dSameSKU",
      "attributedConversions14d",
      "attributedConversions14dSameSKU"
    ] if record_type == :ad_groups
    return [
      "keywordId",
      "adGroupId",
      "campaignId",
      "impressions",
      "clicks",
      "cost",
      "attributedSales14d",
      "attributedSales14dSameSKU",
      "attributedConversions14d",
      "attributedConversions14dSameSKU"
    ] if record_type == :keywords && segment.nil?
    return [
      "adGroupId",
      "campaignId",
      "impressions",
      "clicks",
      "cost",
      "attributedSales14d",
      "attributedConversions14d",
    ] if record_type == :keywords && segment.present?
  elsif @campaign_type == CAMPAIGN_TYPE_CODES[:sp]
    return [
      "campaignId",
      "impressions",
      "clicks",
      "cost",
      "attributedConversions1d",
      "attributedConversions7d",
      "attributedConversions14d",
      "attributedConversions30d",
      "attributedConversions1dSameSKU",
      "attributedConversions7dSameSKU",
      "attributedConversions14dSameSKU",
      "attributedConversions30dSameSKU",
      "attributedUnitsOrdered1d",
      "attributedUnitsOrdered7d",
      "attributedUnitsOrdered14d",
      "attributedUnitsOrdered30d",
      "attributedSales1d",
      "attributedSales7d",
      "attributedSales14d",
      "attributedSales30d",
      "attributedSales1dSameSKU",
      "attributedSales7dSameSKU",
      "attributedSales14dSameSKU",
      "attributedSales30dSameSKU"
    ] if record_type == :campaigns
    return [
      "campaignId",
      "adGroupId",
      "impressions",
      "clicks",
      "cost",
      "attributedConversions1d",
      "attributedConversions7d",
      "attributedConversions14d",
      "attributedConversions30d",
      "attributedConversions1dSameSKU",
      "attributedConversions7dSameSKU",
      "attributedConversions14dSameSKU",
      "attributedConversions30dSameSKU",
      "attributedUnitsOrdered1d",
      "attributedUnitsOrdered7d",
      "attributedUnitsOrdered14d",
      "attributedUnitsOrdered30d",
      "attributedSales1d",
      "attributedSales7d",
      "attributedSales14d",
      "attributedSales30d",
      "attributedSales1dSameSKU",
      "attributedSales7dSameSKU",
      "attributedSales14dSameSKU",
      "attributedSales30dSameSKU"
    ] if record_type == :ad_groups
    return [
      "campaignId",
      "keywordId",
      "impressions",
      "clicks",
      "cost",
      "attributedConversions1d",
      "attributedConversions7d",
      "attributedConversions14d",
      "attributedConversions30d",
      "attributedConversions1dSameSKU",
      "attributedConversions7dSameSKU",
      "attributedConversions14dSameSKU",
      "attributedConversions30dSameSKU",
      "attributedUnitsOrdered1d",
      "attributedUnitsOrdered7d",
      "attributedUnitsOrdered14d",
      "attributedUnitsOrdered30d",
      "attributedSales1d",
      "attributedSales7d",
      "attributedSales14d",
      "attributedSales30d",
      "attributedSales1dSameSKU",
      "attributedSales7dSameSKU",
      "attributedSales14dSameSKU",
      "attributedSales30dSameSKU"
    ] if record_type == :keywords
    return [
      "campaignId",
      "adGroupId",
      "impressions",
      "clicks",
      "cost",
      "attributedConversions1d",
      "attributedConversions7d",
      "attributedConversions14d",
      "attributedConversions30d",
      "attributedConversions1dSameSKU",
      "attributedConversions7dSameSKU",
      "attributedConversions14dSameSKU",
      "attributedConversions30dSameSKU",
      "attributedUnitsOrdered1d",
      "attributedUnitsOrdered7d",
      "attributedUnitsOrdered14d",
      "attributedUnitsOrdered30d",
      "attributedSales1d",
      "attributedSales7d",
      "attributedSales14d",
      "attributedSales30d",
      "attributedSales1dSameSKU",
      "attributedSales7dSameSKU",
      "attributedSales14dSameSKU",
      "attributedSales30dSameSKU"
    ] if record_type == :product_ads
    return [
      "campaignId",
      "targetId",
      "impressions",
      "clicks",
      "cost",
      "attributedConversions1d",
      "attributedConversions7d",
      "attributedConversions14d",
      "attributedConversions30d",
      "attributedConversions1dSameSKU",
      "attributedConversions7dSameSKU",
      "attributedConversions14dSameSKU",
      "attributedConversions30dSameSKU",
      "attributedUnitsOrdered1d",
      "attributedUnitsOrdered7d",
      "attributedUnitsOrdered14d",
      "attributedUnitsOrdered30d",
      "attributedSales1d",
      "attributedSales7d",
      "attributedSales14d",
      "attributedSales30d",
      "attributedSales1dSameSKU",
      "attributedSales7dSameSKU",
      "attributedSales14dSameSKU",
      "attributedSales30dSameSKU"
    ] if record_type == :targets
    return [
      "campaignId",
      "adGroupId",
      "impressions",
      "clicks",
      "cost",
      "attributedConversions1d",
      "attributedConversions7d",
      "attributedConversions14d",
      "attributedConversions30d",
      "attributedConversions1dSameSKU",
      "attributedConversions7dSameSKU",
      "attributedConversions14dSameSKU",
      "attributedConversions30dSameSKU",
      "attributedUnitsOrdered1d",
      "attributedUnitsOrdered7d",
      "attributedUnitsOrdered14d",
      "attributedUnitsOrdered30d",
      "attributedSales1d",
      "attributedSales7d",
      "attributedSales14d",
      "attributedSales30d",
      "attributedSales1dSameSKU",
      "attributedSales7dSameSKU",
      "attributedSales14dSameSKU",
      "attributedSales30dSameSKU"
    ] if record_type == :portfolios
  elsif @campaign_type == CAMPAIGN_TYPE_CODES[:sd]
    return [
      "campaignId",
      "impressions",
      "clicks",
      "cost",
      "currency",
      "attributedConversions1d",
      "attributedConversions7d",
      "attributedConversions14d",
      "attributedConversions30d",
      "attributedConversions1dSameSKU",
      "attributedConversions7dSameSKU",
      "attributedConversions14dSameSKU",
      "attributedConversions30dSameSKU",
      "attributedUnitsOrdered1d",
      "attributedUnitsOrdered7d",
      "attributedUnitsOrdered14d",
      "attributedUnitsOrdered30d",
      "attributedSales1d",
      "attributedSales7d",
      "attributedSales14d",
      "attributedSales30d",
      "attributedSales1dSameSKU",
      "attributedSales7dSameSKU",
      "attributedSales14dSameSKU",
      "attributedSales30dSameSKU"
    ] if record_type == :campaigns
    return [
      "campaignId",
      "adGroupId",
      "impressions",
      "clicks",
      "cost",
      "currency",
      "attributedConversions1d",
      "attributedConversions7d",
      "attributedConversions14d",
      "attributedConversions30d",
      "attributedConversions1dSameSKU",
      "attributedConversions7dSameSKU",
      "attributedConversions14dSameSKU",
      "attributedConversions30dSameSKU",
      "attributedUnitsOrdered1d",
      "attributedUnitsOrdered7d",
      "attributedUnitsOrdered14d",
      "attributedUnitsOrdered30d",
      "attributedSales1d",
      "attributedSales7d",
      "attributedSales14d",
      "attributedSales30d",
      "attributedSales1dSameSKU",
      "attributedSales7dSameSKU",
      "attributedSales14dSameSKU",
      "attributedSales30dSameSKU"
    ] if record_type == :ad_groups
    return [
      "campaignId",
      "adGroupId",
      "impressions",
      "clicks",
      "cost",
      "currency",
      "attributedConversions1d",
      "attributedConversions7d",
      "attributedConversions14d",
      "attributedConversions30d",
      "attributedConversions1dSameSKU",
      "attributedConversions7dSameSKU",
      "attributedConversions14dSameSKU",
      "attributedConversions30dSameSKU",
      "attributedUnitsOrdered1d",
      "attributedUnitsOrdered7d",
      "attributedUnitsOrdered14d",
      "attributedUnitsOrdered30d",
      "attributedSales1d",
      "attributedSales7d",
      "attributedSales14d",
      "attributedSales30d",
      "attributedSales1dSameSKU",
      "attributedSales7dSameSKU",
      "attributedSales14dSameSKU",
      "attributedSales30dSameSKU"
    ] if record_type == :product_ads
    return [
      "campaignId",
      "targetId",
      "impressions",
      "clicks",
      "cost",
      "currency",
      "attributedConversions1d",
      "attributedConversions7d",
      "attributedConversions14d",
      "attributedConversions30d",
      "attributedConversions1dSameSKU",
      "attributedConversions7dSameSKU",
      "attributedConversions14dSameSKU",
      "attributedConversions30dSameSKU",
      "attributedUnitsOrdered1d",
      "attributedUnitsOrdered7d",
      "attributedUnitsOrdered14d",
      "attributedUnitsOrdered30d",
      "attributedSales1d",
      "attributedSales7d",
      "attributedSales14d",
      "attributedSales30d",
      "attributedSales1dSameSKU",
      "attributedSales7dSameSKU",
      "attributedSales14dSameSKU",
      "attributedSales30dSameSKU"
    ] if record_type == :targets
  end
end