Class: Peddler::API
- Inherits:
-
Object
- Object
- Peddler::API
- Defined in:
- lib/peddler/api.rb
Overview
Wraps an Amazon Selling Partner API (SP-API)
Direct Known Subclasses
Peddler::APIs::AmazonWarehousingAndDistribution20240509, Peddler::APIs::AplusContent20201101, Peddler::APIs::ApplicationIntegrations20240401, Peddler::APIs::ApplicationManagement20231130, Peddler::APIs::CatalogItems20201201, Peddler::APIs::CatalogItems20220401, Peddler::APIs::CatalogItemsV0, Peddler::APIs::CustomerFeedback20240601, Peddler::APIs::DataKiosk20231115, Peddler::APIs::DeliveryByAmazon20220701, Peddler::APIs::EasyShip20220323, Peddler::APIs::ExternalFulfillmentInventory20240911, Peddler::APIs::ExternalFulfillmentReturns20240911, Peddler::APIs::ExternalFulfillmentShipments20240911, Peddler::APIs::FBAInboundEligibilityV1, Peddler::APIs::FBAInventoryV1, Peddler::APIs::Feeds20210630, Peddler::APIs::Finances20240619, Peddler::APIs::FinancesV0, Peddler::APIs::FulfillmentInbound20240320, Peddler::APIs::FulfillmentInboundV0, Peddler::APIs::FulfillmentOutbound20200701, Peddler::APIs::Invoices20240619, Peddler::APIs::ListingsItems20200901, Peddler::APIs::ListingsItems20210801, Peddler::APIs::ListingsRestrictions20210801, Peddler::APIs::MerchantFulfillmentV0, Peddler::APIs::MessagingV1, Peddler::APIs::NotificationsV1, Peddler::APIs::OrdersV0, Peddler::APIs::ProductFeesV0, Peddler::APIs::ProductPricing20220501, Peddler::APIs::ProductPricingV0, Peddler::APIs::ProductTypeDefinitions20200901, Peddler::APIs::Replenishment20221107, Peddler::APIs::Reports20210630, Peddler::APIs::SalesV1, Peddler::APIs::SellerWallet20240301, Peddler::APIs::SellersV1, Peddler::APIs::ServicesV1, Peddler::APIs::ShipmentInvoicingV0, Peddler::APIs::ShippingV1, Peddler::APIs::ShippingV2, Peddler::APIs::SolicitationsV1, Peddler::APIs::SupplySources20200701, Peddler::APIs::Tokens20210301, Peddler::APIs::Transfers20240601, Peddler::APIs::Uploads20201101, Peddler::APIs::Vehicles20241101, Peddler::APIs::VendorDirectFulfillmentInventoryV1, Peddler::APIs::VendorDirectFulfillmentOrders20211228, Peddler::APIs::VendorDirectFulfillmentOrdersV1, Peddler::APIs::VendorDirectFulfillmentPaymentsV1, Peddler::APIs::VendorDirectFulfillmentSandboxTestData20211028, Peddler::APIs::VendorDirectFulfillmentShipping20211228, Peddler::APIs::VendorDirectFulfillmentShippingV1, Peddler::APIs::VendorDirectFulfillmentTransactions20211228, Peddler::APIs::VendorDirectFulfillmentTransactionsV1, Peddler::APIs::VendorInvoicesV1, Peddler::APIs::VendorOrdersV1, Peddler::APIs::VendorShipmentsV1, Peddler::APIs::VendorTransactionStatusV1
Defined Under Namespace
Classes: CannotSandbox, MustSandbox
Instance Attribute Summary collapse
-
#access_token ⇒ String
readonly
-
#endpoint ⇒ Peddler::Endpoint
readonly
-
#retries ⇒ Integer
readonly
Number of retries if throttled (default: 0).
Instance Method Summary collapse
-
#endpoint_uri ⇒ URI::HTTPS
-
#http(rate_limit: nil) ⇒ HTTP::Client
-
#initialize(aws_region, access_token, retries: 0, http: HTTP) ⇒ API
constructor
A new instance of API.
-
#sandbox ⇒ self
Switches to the SP-API sandbox to make test calls.
-
#sandbox? ⇒ Boolean
Constructor Details
#initialize(aws_region, access_token, retries: 0, http: HTTP) ⇒ API
Returns a new instance of API.
27 28 29 30 31 32 33 |
# File 'lib/peddler/api.rb', line 27 def initialize(aws_region, access_token, retries: 0, http: HTTP) @endpoint = Endpoint.find(aws_region) @access_token = access_token @retries = retries @http = http @sandbox = false end |
Instance Attribute Details
#access_token ⇒ String (readonly)
16 17 18 |
# File 'lib/peddler/api.rb', line 16 def access_token @access_token end |
#endpoint ⇒ Peddler::Endpoint (readonly)
13 14 15 |
# File 'lib/peddler/api.rb', line 13 def endpoint @endpoint end |
#retries ⇒ Integer (readonly)
Number of retries if throttled (default: 0)
21 22 23 |
# File 'lib/peddler/api.rb', line 21 def retries @retries end |
Instance Method Details
#endpoint_uri ⇒ URI::HTTPS
36 37 38 |
# File 'lib/peddler/api.rb', line 36 def endpoint_uri sandbox? ? endpoint.sandbox : endpoint.production end |
#http(rate_limit: nil) ⇒ HTTP::Client
57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/peddler/api.rb', line 57 def http(rate_limit: nil) client = @http.headers( "Host" => endpoint_uri.host, "User-Agent" => user_agent, "X-Amz-Access-Token" => access_token, "X-Amz-Date" => , ) return client if retries.zero? || rate_limit.nil? delay = sandbox? ? 0.2 : 1.0 / rate_limit client.retriable(delay:, tries: retries + 1, retry_statuses: [429]) # steep:ignore NoMethod end |
#sandbox ⇒ self
Switches to the SP-API sandbox to make test calls
44 45 46 47 |
# File 'lib/peddler/api.rb', line 44 def sandbox @sandbox = true self end |
#sandbox? ⇒ Boolean
50 51 52 |
# File 'lib/peddler/api.rb', line 50 def sandbox? @sandbox end |