lib/blurb/profile.rb in blurb-0.3.2 vs lib/blurb/profile.rb in blurb-0.4.0
- old
+ new
@@ -1,12 +1,146 @@
-module Blurb
- class Profile < BaseResource
+require "blurb/account"
+require "blurb/campaign_requests"
+require "blurb/snapshot_requests"
+require "blurb/report_requests"
+require "blurb/request_collection"
+require "blurb/request_collection_with_campaign_type"
+require "blurb/suggested_keyword_requests"
- def list()
- profile_request("/v2/profiles")
+class Blurb
+ class Profile < BaseClass
+
+ attr_accessor(
+ :account,
+ :ad_groups,
+ :campaign_negative_keywords,
+ :portfolios,
+ :product_ads,
+ :profile_id,
+ :suggested_keywords,
+ )
+
+ def initialize(profile_id:, account:)
+ @profile_id = profile_id
+ @account = account
+
+ @sp_campaigns = CampaignRequests.new(
+ headers: headers_hash,
+ base_url: @account.api_url,
+ resource: "campaigns",
+ campaign_type: CAMPAIGN_TYPE_CODES[:sp]
+ )
+ @sb_campaigns = CampaignRequests.new(
+ headers: headers_hash,
+ base_url: @account.api_url,
+ resource: "campaigns",
+ campaign_type: CAMPAIGN_TYPE_CODES[:sb]
+ )
+ @sp_keywords = RequestCollectionWithCampaignType.new(
+ headers: headers_hash,
+ base_url: @account.api_url,
+ resource: "keywords",
+ campaign_type: CAMPAIGN_TYPE_CODES[:sp]
+ )
+ @sb_keywords = RequestCollectionWithCampaignType.new(
+ headers: headers_hash,
+ base_url: @account.api_url,
+ resource: "keywords",
+ campaign_type: CAMPAIGN_TYPE_CODES[:sb]
+ )
+ @sp_snapshots = SnapshotRequests.new(
+ headers: headers_hash,
+ base_url: @account.api_url,
+ campaign_type: CAMPAIGN_TYPE_CODES[:sp]
+ )
+ @sb_snapshots = SnapshotRequests.new(
+ headers: headers_hash,
+ base_url: @account.api_url,
+ campaign_type: CAMPAIGN_TYPE_CODES[:sb]
+ )
+ @sp_reports = ReportRequests.new(
+ headers: headers_hash,
+ base_url: @account.api_url,
+ campaign_type: CAMPAIGN_TYPE_CODES[:sp]
+ )
+ @sb_reports = ReportRequests.new(
+ headers: headers_hash,
+ base_url: @account.api_url,
+ campaign_type: CAMPAIGN_TYPE_CODES[:sb]
+ )
+ @ad_groups = RequestCollection.new(
+ headers: headers_hash,
+ base_url: "#{@account.api_url}/v2/sp/adGroups"
+ )
+ @product_ads = RequestCollection.new(
+ headers: headers_hash,
+ base_url: "#{account.api_url}/v2/sp/productAds"
+ )
+ @sp_negative_keywords = RequestCollectionWithCampaignType.new(
+ headers: headers_hash,
+ base_url: @account.api_url,
+ resource: 'negativeKeywords',
+ campaign_type: CAMPAIGN_TYPE_CODES[:sp]
+ )
+ @sb_negative_keywords = RequestCollectionWithCampaignType.new(
+ headers: headers_hash,
+ base_url: @account.api_url,
+ resource: 'negativeKeywords',
+ campaign_type: CAMPAIGN_TYPE_CODES[:sb]
+ )
+ @campaign_negative_keywords = RequestCollection.new(
+ headers: headers_hash,
+ base_url: "#{@account.api_url}/v2/sp/campaignNegativeKeywords"
+ )
+ @portfolios = RequestCollection.new(
+ headers: headers_hash,
+ base_url: "#{@account.api_url}/v2/portfolios"
+ )
+ @suggested_keywords = SuggestedKeywordRequests.new(
+ headers: headers_hash,
+ base_url: "#{@account.api_url}/v2/sp"
+ )
end
- def retrieve(profile_id)
- profile_request("/v2/profiles/#{profile_id}")
+ def campaigns(campaign_type)
+ return @sp_campaigns if campaign_type == :sp
+ return @sb_campaigns if campaign_type == :sb || campaign_type == :hsa
+ end
+
+ def keywords(campaign_type)
+ return @sp_keywords if campaign_type == :sp
+ return @sb_keywords if campaign_type == :sb || campaign_type == :hsa
+ end
+
+ def negative_keywords(campaign_type)
+ return @sp_negative_keywords if campaign_type == :sp
+ return @sb_negative_keywords if campaign_type == :sb || campaign_type == :hsa
+ end
+
+ def snapshots(campaign_type)
+ return @sp_snapshots if campaign_type == :sp
+ return @sb_snapshots if campaign_type == :sb || campaign_type == :hsa
+ end
+
+ def reports(campaign_type)
+ return @sp_reports if campaign_type == :sp
+ return @sb_reports if campaign_type == :sb || campaign_type == :hsa
+ end
+
+ def profile_details
+ @account.retrieve_profile(@profile_id)
+ end
+
+ def headers_hash(opts = {})
+ headers_hash = {
+ "Authorization" => "Bearer #{@account.retrieve_token()}",
+ "Content-Type" => "application/json",
+ "Amazon-Advertising-API-Scope" => @profile_id,
+ "Amazon-Advertising-API-ClientId" => @account.client.client_id
+ }
+
+ headers_hash["Content-Encoding"] = "gzip" if opts[:gzip]
+
+ return headers_hash
end
end
end