muffin_man 1.4.1 → 1.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 70bef5fd30926ae053d7a8e2cb36b85b5ad763e0c9ef540254a68d14d90e790d
4
- data.tar.gz: d7762e45d0663c1f6305dd41eed16fe3eed9265469f11c031a52de1f6dbae4c8
3
+ metadata.gz: 33ab3775741e9ae115fdd18683e7632ad1d9f0da5b5c54ee98fbfdc951cacb45
4
+ data.tar.gz: 57629b160dce923145c0d6784cca34b174fdb757f82e95b9d2c18359c6ee137c
5
5
  SHA512:
6
- metadata.gz: 4be6ad20196556290c59054fc3216e8723e25c0c02c8bfb8fef4f78207a885c1e97b07027a41c06279fe83fa816b413a24c9155e13d2f2f76b78f24ab558d4c1
7
- data.tar.gz: 46fcfc5c8d8007b2c4a552516a65bc8c4cb8fe2a07f6d48c17237a77ae4521dc2f5121bfb329ba21e9ef8a7186355d89b7d88c8657cda8856599982241559a67
6
+ metadata.gz: b27ea646bb4beca9038140758b1b0e8082b5beab76ec8c6af8723a5a5459e4466ef1f90bce09799f5adf5794cf71c4ee030734c8a978470ddb0e0d8bc38ff4c4
7
+ data.tar.gz: 15b93790c3f8d6193e0c2fdf13c2f7f90398fbe0771eb57edf6df651573cd973af630a6a4f78fd56297cf98f6119e9730fe3741883ad81ae36519c5dbdad2024
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ # 1.4.4
2
+
3
+ - Support for Tokens API [#17](https://github.com/patterninc/muffin_man/pull/17)
4
+
5
+ # 1.4.3
6
+
7
+ - Support for getOrderAddress [#16](https://github.com/patterninc/muffin_man/pull/16)
8
+
9
+ # 1.4.2
10
+
11
+ - Support for getOrders and getOrderItems [#15](https://github.com/patterninc/muffin_man/pull/15)
12
+
1
13
  # 1.4.0
2
14
 
3
15
  - Pass cache key to client for caching access tokens [#11](https://github.com/patterninc/muffin_man/pull/11)
@@ -0,0 +1,55 @@
1
+ module MuffinMan
2
+ module Orders
3
+ class V0 < SpApiClient
4
+
5
+ GET_ORDERS_PARAMS = %w[
6
+ CreatedAfter
7
+ CreatedBefore
8
+ LastUpdatedAfter
9
+ LastUpdatedBefore
10
+ OrderStatuses
11
+ FulfillmentChannels
12
+ PaymentMethods
13
+ BuyerEmail
14
+ SellerOrderId
15
+ MaxResultsPerPage
16
+ EasyShipShipmentStatuses
17
+ NextToken
18
+ AmazonOrderIds
19
+ ActualFulfillmentSupplySourceId
20
+ IsISPU
21
+ StoreChainStoreId
22
+ ].freeze
23
+
24
+ GET_ORDER_ITEMS_PARAMS = %w[
25
+ NextToken
26
+ ].freeze
27
+
28
+ PII_DATA_ELEMENTS = %w[
29
+ buyerInfo shippingAddress buyerTaxInformation
30
+ ]
31
+
32
+ def get_orders(marketplace_ids, params = {}, pii_data_elements: [])
33
+ @local_var_path = "/orders/v0/orders"
34
+ @pii_data_elements = pii_data_elements & PII_DATA_ELEMENTS
35
+ @query_params = params.slice(*GET_ORDERS_PARAMS)
36
+ @query_params["MarketplaceIds"] = marketplace_ids
37
+ @request_type = "GET"
38
+ call_api
39
+ end
40
+
41
+ def get_order_items(order_id, params = {})
42
+ @query_params = params.slice(*GET_ORDER_ITEMS_PARAMS)
43
+ @local_var_path = "/orders/v0/orders/#{order_id}/orderItems"
44
+ @request_type = "GET"
45
+ call_api
46
+ end
47
+
48
+ def get_order_address(order_id)
49
+ @local_var_path = "/orders/v0/orders/#{order_id}/address"
50
+ @request_type = "GET"
51
+ call_api
52
+ end
53
+ end
54
+ end
55
+ end
@@ -9,7 +9,8 @@ module MuffinMan
9
9
  attr_reader :refresh_token, :client_id, :client_secret, :aws_access_key_id,
10
10
  :aws_secret_access_key, :sts_iam_role_arn, :sandbox, :config,
11
11
  :region, :request_type, :local_var_path, :query_params,
12
- :request_body, :scope, :access_token_cache_key
12
+ :request_body, :scope, :access_token_cache_key, :credentials,
13
+ :pii_data_elements
13
14
 
14
15
  ACCESS_TOKEN_URL = "https://api.amazon.com/auth/o2/token".freeze
15
16
  SERVICE_NAME = "execute-api".freeze
@@ -30,6 +31,8 @@ module MuffinMan
30
31
  @scope = credentials[:scope]
31
32
  @access_token_cache_key = credentials[:access_token_cache_key]
32
33
  @sandbox = sandbox
34
+ @credentials = credentials
35
+ @pii_data_elements = []
33
36
  Typhoeus::Config.user_agent = ""
34
37
  @config = MuffinMan.configuration
35
38
  end
@@ -146,7 +149,11 @@ module MuffinMan
146
149
  end
147
150
 
148
151
  def headers
149
- access_token = scope ? retrieve_grantless_access_token : retrieve_lwa_access_token
152
+ if requires_rdt_token_for_pii?
153
+ access_token = retrieve_rdt_access_token || retrieve_lwa_access_token
154
+ else
155
+ access_token = scope ? retrieve_grantless_access_token : retrieve_lwa_access_token
156
+ end
150
157
  headers = {
151
158
  "x-amz-access-token" => access_token,
152
159
  "user-agent" => "MuffinMan/#{VERSION} (Language=Ruby)",
@@ -155,6 +162,17 @@ module MuffinMan
155
162
  signed_request.headers.merge(headers)
156
163
  end
157
164
 
165
+ def requires_rdt_token_for_pii?
166
+ pii_data_elements.any?
167
+ end
168
+
169
+ def retrieve_rdt_access_token
170
+ rdt_token_response = Tokens::V20210301.new(credentials, sandbox).create_restricted_data_token(
171
+ @local_var_path, @request_type, pii_data_elements
172
+ )
173
+ JSON.parse(rdt_token_response.body)["restrictedDataToken"]
174
+ end
175
+
158
176
  def derive_aws_region
159
177
  @aws_region ||= AWS_REGION_MAP[region]
160
178
  unless @aws_region
@@ -0,0 +1,19 @@
1
+ module MuffinMan
2
+ module Tokens
3
+ class V20210301 < SpApiClient
4
+ def create_restricted_data_token(path, method, data_elements, target_application: nil)
5
+ @local_var_path = "/tokens/2021-03-01/restrictedDataToken"
6
+ @request_body = {}
7
+ @request_body["targetApplication"] = target_application unless target_application.nil?
8
+ restricted_resources = {
9
+ "method" => method,
10
+ "path" => path,
11
+ "dataElements" => data_elements
12
+ }
13
+ @request_body["restrictedResources"] = [restricted_resources]
14
+ @request_type = "POST"
15
+ call_api
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MuffinMan
4
- VERSION = "1.4.1"
4
+ VERSION = "1.4.4"
5
5
  end
data/lib/muffin_man.rb CHANGED
@@ -2,10 +2,12 @@ require "muffin_man/version"
2
2
  require "muffin_man/sp_api_client"
3
3
  require "muffin_man/lwa/auth_helper"
4
4
  require "muffin_man/solicitations/v1"
5
+ require "muffin_man/orders/v0"
5
6
  require "muffin_man/reports/v20210630"
6
7
  require "muffin_man/catalog_items/v20201201"
7
8
  require "muffin_man/finances/v0"
8
9
  require "muffin_man/authorization/v1"
10
+ require "muffin_man/tokens/v20210301"
9
11
 
10
12
  module MuffinMan
11
13
  class Error < StandardError; end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: muffin_man
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2022-06-30 00:00:00.000000000 Z
13
+ date: 2022-07-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
@@ -142,9 +142,11 @@ files:
142
142
  - lib/muffin_man/catalog_items/v20201201.rb
143
143
  - lib/muffin_man/finances/v0.rb
144
144
  - lib/muffin_man/lwa/auth_helper.rb
145
+ - lib/muffin_man/orders/v0.rb
145
146
  - lib/muffin_man/reports/v20210630.rb
146
147
  - lib/muffin_man/solicitations/v1.rb
147
148
  - lib/muffin_man/sp_api_client.rb
149
+ - lib/muffin_man/tokens/v20210301.rb
148
150
  - lib/muffin_man/version.rb
149
151
  - muffin_man.gemspec
150
152
  homepage: https://github.com/patterninc/muffin_man