Class: Vacuum::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/vacuum/client.rb

Overview

A client for the Amazon Creators API

Handles authentication automatically and caches access tokens.

Examples:

Basic usage (v2.x)

client = Vacuum::Client.new(
  credential_id: "YOUR_CREDENTIAL_ID",
  credential_secret: "YOUR_CREDENTIAL_SECRET",
  version: "2.1"
)

Basic usage (v3.x)

client = Vacuum::Client.new(
  credential_id: "YOUR_CREDENTIAL_ID",
  credential_secret: "YOUR_CREDENTIAL_SECRET",
  version: "3.3"
)

With shared cache (for multi-process environments like Rails)

client = Vacuum::Client.new(
  credential_id: "YOUR_CREDENTIAL_ID",
  credential_secret: "YOUR_CREDENTIAL_SECRET",
  version: "2.1",
  cache: Rails.cache
)

Constant Summary collapse

AUTH_URLS =
{
  "2.1" => "https://creatorsapi.auth.us-east-1.amazoncognito.com/oauth2/token",
  "2.2" => "https://creatorsapi.auth.eu-south-2.amazoncognito.com/oauth2/token",
  "2.3" => "https://creatorsapi.auth.us-west-2.amazoncognito.com/oauth2/token",
  "3.1" => "https://api.amazon.com/auth/o2/token",
  "3.2" => "https://api.amazon.co.uk/auth/o2/token",
  "3.3" => "https://api.amazon.co.jp/auth/o2/token",
}.freeze
API_URL =
"https://creatorsapi.amazon/catalog/v1"
TOKEN_TTL =

59.5 minutes (tokens valid for 1 hour)

3570

Instance Method Summary collapse

Constructor Details

#initialize(version:, credential_id:, credential_secret:, cache: nil, http: HTTP) ⇒ Client

Creates a new client

Parameters:

  • credential_id (String)

    Your Creators API credential ID

  • credential_secret (String)

    Your Creators API credential secret

  • version (String)

    API version (“2.1”-“2.3” for Cognito, “3.1”-“3.3” for LwA)

  • cache (#fetch) (defaults to: nil)

    Optional cache store

  • http (HTTP::Client) (defaults to: HTTP)


52
53
54
55
56
57
58
59
60
61
# File 'lib/vacuum/client.rb', line 52

def initialize(version:, credential_id:, credential_secret:, cache: nil, http: HTTP)
  @version = version
  @auth_url = AUTH_URLS.fetch(version) do
    raise ArgumentError, "Unknown version: #{version}"
  end
  @credential_id = credential_id
  @credential_secret = credential_secret
  @cache = cache
  @http = http
end

Instance Method Details

#get_browse_nodes(marketplace:, partner_tag:, browse_node_ids:, **params) ⇒ HTTP::Response

Returns details about specified browse nodes

Parameters:

  • marketplace (String)

    The marketplace (e.g., “www.amazon.com”)

  • partner_tag (String)

    Your partner/tracking tag

  • browse_node_ids (Array<String>)

    The browse node IDs to look up

Returns:

  • (HTTP::Response)


69
70
71
72
# File 'lib/vacuum/client.rb', line 69

def get_browse_nodes(marketplace:, partner_tag:, browse_node_ids:, **params)
  params[:browse_node_ids] = Array(browse_node_ids)
  request("getBrowseNodes", marketplace:, partner_tag:, **params)
end

#get_items(marketplace:, partner_tag:, item_ids:, **params) ⇒ HTTP::Response

Returns the attributes of one or more items

Parameters:

  • marketplace (String)

    The marketplace (e.g., “www.amazon.com”)

  • partner_tag (String)

    Your partner/tracking tag

  • item_ids (Array<String>, String)

    The item IDs (ASINs) to look up

Returns:

  • (HTTP::Response)


80
81
82
83
# File 'lib/vacuum/client.rb', line 80

def get_items(marketplace:, partner_tag:, item_ids:, **params)
  params[:item_ids] = Array(item_ids)
  request("getItems", marketplace:, partner_tag:, **params)
end

#get_variations(marketplace:, partner_tag:, **params) ⇒ HTTP::Response

Returns variations of a product

Parameters:

  • marketplace (String)

    The marketplace (e.g., “www.amazon.com”)

  • partner_tag (String)

    Your partner/tracking tag

  • asin (String)

    The ASIN to get variations for

Returns:

  • (HTTP::Response)


91
92
93
# File 'lib/vacuum/client.rb', line 91

def get_variations(marketplace:, partner_tag:, **params)
  request("getVariations", marketplace:, partner_tag:, **params)
end

#search_items(marketplace:, partner_tag:, **params) ⇒ HTTP::Response

Searches for items on Amazon

Parameters:

  • marketplace (String)

    The marketplace (e.g., “www.amazon.com”)

  • partner_tag (String)

    Your partner/tracking tag

  • keywords (String)

    Search keywords

Returns:

  • (HTTP::Response)


101
102
103
# File 'lib/vacuum/client.rb', line 101

def search_items(marketplace:, partner_tag:, **params)
  request("searchItems", marketplace:, partner_tag:, **params)
end