Class: AmazonAds::API

Inherits:
Object
  • Object
show all
Defined in:
lib/amazon_ads/api.rb

Overview

Base class for Amazon Ads API endpoints

Constant Summary collapse

ENDPOINTS =

Signature:

  • Hash[Symbol, String]

{ #: Hash[Symbol, String]
  na: "advertising-api.amazon.com",
  eu: "advertising-api-eu.amazon.com",
  fe: "advertising-api-fe.amazon.com",
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(region:, access_token:, profile_id: nil, account_id: nil, retries: 0, http: HTTP) ⇒ API

Returns a new instance of API.

Signature:

  • (region: Symbol | String, access_token: String, ?profile_id: String?, ?account_id: String?, ?retries: Integer, ?http: untyped) -> void



30
31
32
33
34
35
36
37
# File 'lib/amazon_ads/api.rb', line 30

def initialize(region:, access_token:, profile_id: nil, account_id: nil, retries: 0, http: HTTP)
  @region = region.to_s.downcase.to_sym
  @access_token = access_token
  @profile_id = profile_id
  @account_id = 
  @retries = retries
  @http = http
end

Instance Attribute Details

#access_tokenObject (readonly)

LWA access token



18
19
20
# File 'lib/amazon_ads/api.rb', line 18

def access_token
  @access_token
end

#account_idObject (readonly)

Advertiser account



24
25
26
# File 'lib/amazon_ads/api.rb', line 24

def 
  @account_id
end

#profile_idObject (readonly)

Advertiser profile, scopes requests to a marketplace



21
22
23
# File 'lib/amazon_ads/api.rb', line 21

def profile_id
  @profile_id
end

#regionObject (readonly)

API endpoint region



15
16
17
# File 'lib/amazon_ads/api.rb', line 15

def region
  @region
end

#retriesObject (readonly)

Number of retries when throttled (default: 0)



27
28
29
# File 'lib/amazon_ads/api.rb', line 27

def retries
  @retries
end

Instance Method Details

#endpointObject

Signature:

  • () -> URI::HTTPS



40
41
42
43
44
# File 'lib/amazon_ads/api.rb', line 40

def endpoint
  URI::HTTPS.build(host: ENDPOINTS.fetch(region) do
    raise ArgumentError, "Unknown region: #{region}"
  end)
end

#httpObject

Signature:

  • () -> HTTP::Client



47
48
49
50
51
52
53
54
55
# File 'lib/amazon_ads/api.rb', line 47

def http
  client = @http
    .headers(default_headers)
    .use(:auto_inflate)

  return client if retries.zero?

  client.retriable(tries: retries + 1, retry_statuses: [429])
end