muffin_man 1.4.2 → 1.4.5

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: 623d2023a06aac6fb6afa8c44477b42cdbdaf80083008234ae1c546aa9605370
4
- data.tar.gz: 34c9ecfa7100b68554aa5a760eef87cca0f7f08e71f19582b8473b0b9d343e5e
3
+ metadata.gz: b464f989ff6561fcd595fa4e635537b955d4b4335ebe5932df370d6c837587a8
4
+ data.tar.gz: 4dd6ce7d1228112f15e39017d83f87a8e6606eef8504766da7719d3ec764a414
5
5
  SHA512:
6
- metadata.gz: 69d1c9e33cd59a40b0d6a90d4f6e1de60b1e54dffad10a9fd464a951962629d9f869d2e8a25984efe08a4fdef1bc4241366e32eb7d10a465af50129690773ccf
7
- data.tar.gz: cde4c8a95769487da510b0aaff47dad10cbd25ab526f4a62de077e85fca91f7e9ee622b5672e37255ca551428a5594c0c1972e8fcddf8285a240f64c31598e1c
6
+ metadata.gz: 1d3ac2b501430a907d228b9c8d8bde739b668a2b3a18989b11893f3951c1fda2d72d427e54744aadc59f13bdec49923af9b12514c937f42e3ca0dd057f95b956
7
+ data.tar.gz: c7826e357ef7a75a5aa67825139faf7dd5374af2edd15c283520f5292fbddc82c33c909f9c5df52acc374062ac351ea4d79b8ec100f001c38cb36413191d9eac
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
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
+
1
9
  # 1.4.2
2
10
 
3
11
  - Support for getOrders and getOrderItems [#15](https://github.com/patterninc/muffin_man/pull/15)
@@ -25,8 +25,13 @@ module MuffinMan
25
25
  NextToken
26
26
  ].freeze
27
27
 
28
- def get_orders(marketplace_ids, params = {})
28
+ PII_DATA_ELEMENTS = %w[
29
+ buyerInfo shippingAddress buyerTaxInformation
30
+ ]
31
+
32
+ def get_orders(marketplace_ids, params = {}, pii_data_elements: [])
29
33
  @local_var_path = "/orders/v0/orders"
34
+ @pii_data_elements = pii_data_elements & PII_DATA_ELEMENTS
30
35
  @query_params = params.slice(*GET_ORDERS_PARAMS)
31
36
  @query_params["MarketplaceIds"] = marketplace_ids
32
37
  @request_type = "GET"
@@ -39,6 +44,12 @@ module MuffinMan
39
44
  @request_type = "GET"
40
45
  call_api
41
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
42
53
  end
43
54
  end
44
- 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
@@ -124,7 +127,8 @@ module MuffinMan
124
127
  client = Aws::STS::Client.new(
125
128
  region: derive_aws_region,
126
129
  access_key_id: aws_access_key_id,
127
- secret_access_key: aws_secret_access_key
130
+ secret_access_key: aws_secret_access_key,
131
+ http_wire_trace: (ENV["AWS_DEBUG"] == "true" || false)
128
132
  )
129
133
  client.assume_role(role_arn: sts_iam_role_arn, role_session_name: SecureRandom.uuid)
130
134
  end
@@ -146,7 +150,11 @@ module MuffinMan
146
150
  end
147
151
 
148
152
  def headers
149
- access_token = scope ? retrieve_grantless_access_token : retrieve_lwa_access_token
153
+ if requires_rdt_token_for_pii?
154
+ access_token = retrieve_rdt_access_token || retrieve_lwa_access_token
155
+ else
156
+ access_token = scope ? retrieve_grantless_access_token : retrieve_lwa_access_token
157
+ end
150
158
  headers = {
151
159
  "x-amz-access-token" => access_token,
152
160
  "user-agent" => "MuffinMan/#{VERSION} (Language=Ruby)",
@@ -155,6 +163,17 @@ module MuffinMan
155
163
  signed_request.headers.merge(headers)
156
164
  end
157
165
 
166
+ def requires_rdt_token_for_pii?
167
+ pii_data_elements.any?
168
+ end
169
+
170
+ def retrieve_rdt_access_token
171
+ rdt_token_response = Tokens::V20210301.new(credentials, sandbox).create_restricted_data_token(
172
+ @local_var_path, @request_type, pii_data_elements
173
+ )
174
+ JSON.parse(rdt_token_response.body)["restrictedDataToken"]
175
+ end
176
+
158
177
  def derive_aws_region
159
178
  @aws_region ||= AWS_REGION_MAP[region]
160
179
  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.2"
4
+ VERSION = "1.4.5"
5
5
  end
data/lib/muffin_man.rb CHANGED
@@ -7,6 +7,7 @@ require "muffin_man/reports/v20210630"
7
7
  require "muffin_man/catalog_items/v20201201"
8
8
  require "muffin_man/finances/v0"
9
9
  require "muffin_man/authorization/v1"
10
+ require "muffin_man/tokens/v20210301"
10
11
 
11
12
  module MuffinMan
12
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.2
4
+ version: 1.4.5
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-07-13 00:00:00.000000000 Z
13
+ date: 2022-08-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
@@ -146,6 +146,7 @@ files:
146
146
  - lib/muffin_man/reports/v20210630.rb
147
147
  - lib/muffin_man/solicitations/v1.rb
148
148
  - lib/muffin_man/sp_api_client.rb
149
+ - lib/muffin_man/tokens/v20210301.rb
149
150
  - lib/muffin_man/version.rb
150
151
  - muffin_man.gemspec
151
152
  homepage: https://github.com/patterninc/muffin_man
@@ -167,7 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
168
  - !ruby/object:Gem::Version
168
169
  version: '0'
169
170
  requirements: []
170
- rubygems_version: 3.2.22
171
+ rubygems_version: 3.1.6
171
172
  signing_key:
172
173
  specification_version: 4
173
174
  summary: Amazon Selling Partner API client