muffin_man 1.4.1 → 1.4.4

Sign up to get free protection for your applications and to get access to all the features.
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