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 +4 -4
- data/CHANGELOG.md +8 -0
- data/lib/muffin_man/orders/v0.rb +13 -2
- data/lib/muffin_man/sp_api_client.rb +22 -3
- data/lib/muffin_man/tokens/v20210301.rb +19 -0
- data/lib/muffin_man/version.rb +1 -1
- data/lib/muffin_man.rb +1 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b464f989ff6561fcd595fa4e635537b955d4b4335ebe5932df370d6c837587a8
|
4
|
+
data.tar.gz: 4dd6ce7d1228112f15e39017d83f87a8e6606eef8504766da7719d3ec764a414
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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)
|
data/lib/muffin_man/orders/v0.rb
CHANGED
@@ -25,8 +25,13 @@ module MuffinMan
|
|
25
25
|
NextToken
|
26
26
|
].freeze
|
27
27
|
|
28
|
-
|
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
|
-
|
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
|
data/lib/muffin_man/version.rb
CHANGED
data/lib/muffin_man.rb
CHANGED
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.
|
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-
|
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.
|
171
|
+
rubygems_version: 3.1.6
|
171
172
|
signing_key:
|
172
173
|
specification_version: 4
|
173
174
|
summary: Amazon Selling Partner API client
|