muffin_man 1.4.2 → 1.4.5

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: 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