lib/blurb/report.rb in blurb-0.1.2 vs lib/blurb/report.rb in blurb-0.2.0

- old
+ new

@@ -2,31 +2,215 @@ class Report < BaseResource CAMPAIGNS = "campaigns" AD_GROUPS = "adGroups" KEYWORDS = "keywords" PRODUCT_ADS = "productAds" + SPONSORED_PRODUCTS = "sp" + SPONSORED_BRANDS = "hsa" def self.create(params = {}, opts = {}) # required argument checks raise ArgumentError.new("params hash must contain a recordType") unless params["recordType"] + # If no metrics are passed in, use the default metrics + metrics = params["metrics"] || get_default_metrics(params["recordType"],params["campaignType"]) + api_params = { - "campaignType" => "sponsoredProducts", "reportDate" => params["reportDate"], - "metrics" => params["metrics"] + "metrics" => metrics } api_params["segment"] = params["segment"] if params["segment"] - post_request("/v1/#{params["recordType"]}/report", api_params) + post_request("/v2/#{params["campaignType"]}/#{params["recordType"]}/report", api_params) end def self.status(report_id, opts = {}) - get_request("/v1/reports/#{report_id}") + get_request("/v2/reports/#{report_id}") end def self.download(location, opts = {}) opts.merge!({:full_path => true, :gzip => true, :no_token => true}) get_request(location, opts) + end + + private + + def self.get_default_metrics(record_type, campaign_type) + if campaign_type == SPONSORED_BRANDS + return [ + "campaignName", + "campaignId", + "campaignStatus", + "campaignBudget", + "campaignBudgetType", + "impressions", + "clicks", + "cost", + "attributedSales14d", + "attributedSales14dSameSKU", + "attributedConversions14d", + "attributedConversions14dSameSKU" + ].join(",") if record_type == CAMPAIGNS + return [ + "adGroupId", + "adGroupName", + "campaignName", + "campaignId", + "campaignStatus", + "campaignBudget", + "campaignBudgetType", + "impressions", + "clicks", + "cost", + "attributedSales14d", + "attributedSales14dSameSKU", + "attributedConversions14d", + "attributedConversions14dSameSKU" + ].join(",") if record_type == AD_GROUPS + return [ + "keywordId", + "keywordStatus", + "keywordBid", + "keywordText", + "matchType", + "adGroupId", + "adGroupName", + "campaignName", + "campaignId", + "campaignStatus", + "campaignBudget", + "campaignBudgetType", + "impressions", + "clicks", + "cost", + "attributedSales14d", + "attributedSales14dSameSKU", + "attributedConversions14d", + "attributedConversions14dSameSKU" + ].join(",") if record_type == KEYWORDS + elsif campaign_type == SPONSORED_PRODUCTS + return [ + "bidPlus", + "campaignName", + "campaignId", + "campaignStatus", + "campaignBudget", + "impressions", + "clicks", + "cost", + "attributedConversions1d", + "attributedConversions7d", + "attributedConversions14d", + "attributedConversions30d", + "attributedConversions1dSameSKU", + "attributedConversions7dSameSKU", + "attributedConversions14dSameSKU", + "attributedConversions30dSameSKU", + "attributedUnitsOrdered1d", + "attributedUnitsOrdered7d", + "attributedUnitsOrdered14d", + "attributedUnitsOrdered30d", + "attributedSales1d", + "attributedSales7d", + "attributedSales14d", + "attributedSales30d", + "attributedSales1dSameSKU", + "attributedSales7dSameSKU", + "attributedSales14dSameSKU", + "attributedSales30dSameSKU" + ].join(",") if record_type == CAMPAIGNS + return [ + "campaignName", + "campaignId", + "adGroupName", + "adGroupId", + "impressions", + "clicks", + "cost", + "attributedConversions1d", + "attributedConversions7d", + "attributedConversions14d", + "attributedConversions30d", + "attributedConversions1dSameSKU", + "attributedConversions7dSameSKU", + "attributedConversions14dSameSKU", + "attributedConversions30dSameSKU", + "attributedUnitsOrdered1d", + "attributedUnitsOrdered7d", + "attributedUnitsOrdered14d", + "attributedUnitsOrdered30d", + "attributedSales1d", + "attributedSales7d", + "attributedSales14d", + "attributedSales30d", + "attributedSales1dSameSKU", + "attributedSales7dSameSKU", + "attributedSales14dSameSKU", + "attributedSales30dSameSKU" + ].join(",") if record_type == AD_GROUPS + return [ + "campaignName", + "campaignId", + "keywordId", + "keywordText", + "matchType", + "impressions", + "clicks", + "cost", + "attributedConversions1d", + "attributedConversions7d", + "attributedConversions14d", + "attributedConversions30d", + "attributedConversions1dSameSKU", + "attributedConversions7dSameSKU", + "attributedConversions14dSameSKU", + "attributedConversions30dSameSKU", + "attributedUnitsOrdered1d", + "attributedUnitsOrdered7d", + "attributedUnitsOrdered14d", + "attributedUnitsOrdered30d", + "attributedSales1d", + "attributedSales7d", + "attributedSales14d", + "attributedSales30d", + "attributedSales1dSameSKU", + "attributedSales7dSameSKU", + "attributedSales14dSameSKU", + "attributedSales30dSameSKU" + ].join(",") if record_type == KEYWORDS + return [ + "campaignName", + "campaignId", + "adGroupName", + "adGroupId", + "impressions", + "clicks", + "cost", + "currency", + "asin", + "sku", + "attributedConversions1d", + "attributedConversions7d", + "attributedConversions14d", + "attributedConversions30d", + "attributedConversions1dSameSKU", + "attributedConversions7dSameSKU", + "attributedConversions14dSameSKU", + "attributedConversions30dSameSKU", + "attributedUnitsOrdered1d", + "attributedUnitsOrdered7d", + "attributedUnitsOrdered14d", + "attributedUnitsOrdered30d", + "attributedSales1d", + "attributedSales7d", + "attributedSales14d", + "attributedSales30d", + "attributedSales1dSameSKU", + "attributedSales7dSameSKU", + "attributedSales14dSameSKU", + "attributedSales30dSameSKU" + ].join(",") if record_type == PRODUCT_ADS + end end end end