muffin_man 1.3.0 → 1.4.2
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 +4 -4
- data/.gitignore +3 -0
- data/CHANGELOG.md +7 -0
- data/README.md +6 -3
- data/lib/muffin_man/orders/v0.rb +44 -0
- data/lib/muffin_man/reports/v20210630.rb +11 -0
- data/lib/muffin_man/sp_api_client.rb +11 -5
- data/lib/muffin_man/version.rb +1 -1
- data/lib/muffin_man.rb +1 -0
- data/muffin_man.gemspec +1 -0
- metadata +19 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 623d2023a06aac6fb6afa8c44477b42cdbdaf80083008234ae1c546aa9605370
|
4
|
+
data.tar.gz: 34c9ecfa7100b68554aa5a760eef87cca0f7f08e71f19582b8473b0b9d343e5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69d1c9e33cd59a40b0d6a90d4f6e1de60b1e54dffad10a9fd464a951962629d9f869d2e8a25984efe08a4fdef1bc4241366e32eb7d10a465af50129690773ccf
|
7
|
+
data.tar.gz: cde4c8a95769487da510b0aaff47dad10cbd25ab526f4a62de077e85fca91f7e9ee622b5672e37255ca551428a5594c0c1972e8fcddf8285a240f64c31598e1c
|
data/.gitignore
CHANGED
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -40,6 +40,7 @@ credentials = {
|
|
40
40
|
aws_secret_access_key: AWS_SECRET_ACCESS_KEY,
|
41
41
|
region: REGION, # This can be one of ['na', 'eu', 'fe'] and defaults to 'na'
|
42
42
|
sts_iam_role_arn: STS_IAM_ROLE_ARN, # Optional
|
43
|
+
access_token_cache_key: SELLING_PARTNER_ID, # Optional if you want access token caching
|
43
44
|
}
|
44
45
|
client = MuffinMan::Solicitations::V1.new(credentials)
|
45
46
|
response = client.create_product_review_and_seller_feedback_solicitation(amazon_order_id, marketplace_ids)
|
@@ -48,6 +49,8 @@ JSON.parse(response.body)
|
|
48
49
|
|
49
50
|
You can optionally use Amazon's sandbox environment by specifying `client = MuffinMan::Solicitations.new(credentials, sandbox = true)`
|
50
51
|
|
52
|
+
### Access Token Caching
|
53
|
+
|
51
54
|
You can save and retrieve the LWA refresh token by defining a lambda in your initializers.
|
52
55
|
|
53
56
|
For example, if you are using Redis as your cache you could define:
|
@@ -55,11 +58,11 @@ For example, if you are using Redis as your cache you could define:
|
|
55
58
|
```ruby
|
56
59
|
@@redis = Redis.new
|
57
60
|
MuffinMan.configure do |config|
|
58
|
-
config.save_access_token = -> (
|
59
|
-
@@redis.set("SP-TOKEN-#{
|
61
|
+
config.save_access_token = -> (access_token_cache_key, token) do
|
62
|
+
@@redis.set("SP-TOKEN-#{access_token_cache_key}", token['access_token'], ex: token['expires_in'])
|
60
63
|
end
|
61
64
|
|
62
|
-
config.get_access_token = -> (
|
65
|
+
config.get_access_token = -> (access_token_cache_key) { @@redis.get("SP-TOKEN-#{access_token_cache_key}") }
|
63
66
|
end
|
64
67
|
```
|
65
68
|
|
@@ -0,0 +1,44 @@
|
|
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
|
+
def get_orders(marketplace_ids, params = {})
|
29
|
+
@local_var_path = "/orders/v0/orders"
|
30
|
+
@query_params = params.slice(*GET_ORDERS_PARAMS)
|
31
|
+
@query_params["MarketplaceIds"] = marketplace_ids
|
32
|
+
@request_type = "GET"
|
33
|
+
call_api
|
34
|
+
end
|
35
|
+
|
36
|
+
def get_order_items(order_id, params = {})
|
37
|
+
@query_params = params.slice(*GET_ORDER_ITEMS_PARAMS)
|
38
|
+
@local_var_path = "/orders/v0/orders/#{order_id}/orderItems"
|
39
|
+
@request_type = "GET"
|
40
|
+
call_api
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -73,6 +73,17 @@ module MuffinMan
|
|
73
73
|
@request_type = "GET"
|
74
74
|
call_api
|
75
75
|
end
|
76
|
+
|
77
|
+
def get_report_document_body(report_document_id)
|
78
|
+
response = get_report_document(report_document_id)
|
79
|
+
parsed_response=JSON.parse(response.body)
|
80
|
+
report=Net::HTTP.get(URI.parse(parsed_response['url']))
|
81
|
+
unless (parsed_response['compressionAlgorithm']).nil?
|
82
|
+
input = StringIO.new(report)
|
83
|
+
report = Zlib::GzipReader.new(input).read
|
84
|
+
end
|
85
|
+
report
|
86
|
+
end
|
76
87
|
end
|
77
88
|
end
|
78
89
|
end
|
@@ -7,8 +7,9 @@ require "securerandom"
|
|
7
7
|
module MuffinMan
|
8
8
|
class SpApiClient
|
9
9
|
attr_reader :refresh_token, :client_id, :client_secret, :aws_access_key_id,
|
10
|
-
:aws_secret_access_key, :sts_iam_role_arn, :sandbox, :config,
|
11
|
-
:
|
10
|
+
:aws_secret_access_key, :sts_iam_role_arn, :sandbox, :config,
|
11
|
+
:region, :request_type, :local_var_path, :query_params,
|
12
|
+
:request_body, :scope, :access_token_cache_key
|
12
13
|
|
13
14
|
ACCESS_TOKEN_URL = "https://api.amazon.com/auth/o2/token".freeze
|
14
15
|
SERVICE_NAME = "execute-api".freeze
|
@@ -27,6 +28,7 @@ module MuffinMan
|
|
27
28
|
@sts_iam_role_arn = credentials[:sts_iam_role_arn]
|
28
29
|
@region = credentials[:region] || "na"
|
29
30
|
@scope = credentials[:scope]
|
31
|
+
@access_token_cache_key = credentials[:access_token_cache_key]
|
30
32
|
@sandbox = sandbox
|
31
33
|
Typhoeus::Config.user_agent = ""
|
32
34
|
@config = MuffinMan.configuration
|
@@ -63,18 +65,22 @@ module MuffinMan
|
|
63
65
|
end
|
64
66
|
|
65
67
|
def retrieve_lwa_access_token
|
66
|
-
return request_lwa_access_token["access_token"] unless
|
68
|
+
return request_lwa_access_token["access_token"] unless use_cache?
|
67
69
|
|
68
|
-
stored_token = config.get_access_token.call(
|
70
|
+
stored_token = config.get_access_token.call(access_token_cache_key)
|
69
71
|
if stored_token.nil?
|
70
72
|
new_token = request_lwa_access_token
|
71
|
-
config.save_access_token.call(
|
73
|
+
config.save_access_token.call(access_token_cache_key, new_token)
|
72
74
|
new_token["access_token"]
|
73
75
|
else
|
74
76
|
stored_token
|
75
77
|
end
|
76
78
|
end
|
77
79
|
|
80
|
+
def use_cache?
|
81
|
+
defined?(config.save_access_token) && defined?(config.get_access_token) && access_token_cache_key
|
82
|
+
end
|
83
|
+
|
78
84
|
def request_lwa_access_token
|
79
85
|
body = {
|
80
86
|
grant_type: "refresh_token",
|
data/lib/muffin_man/version.rb
CHANGED
data/lib/muffin_man.rb
CHANGED
@@ -2,6 +2,7 @@ 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"
|
data/muffin_man.gemspec
CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_development_dependency "rspec", "~> 3.2"
|
22
22
|
spec.add_development_dependency 'webmock', '~> 2.1'
|
23
|
+
spec.add_development_dependency 'byebug'
|
23
24
|
spec.add_development_dependency 'mock_redis', '>=0.14'
|
24
25
|
spec.add_runtime_dependency 'typhoeus', '~> 1.0', '>= 1.0.1'
|
25
26
|
spec.add_runtime_dependency 'aws-sigv4', '>= 1.1'
|
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
|
+
version: 1.4.2
|
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-07-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec
|
@@ -40,6 +40,20 @@ dependencies:
|
|
40
40
|
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '2.1'
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: byebug
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
type: :development
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
43
57
|
- !ruby/object:Gem::Dependency
|
44
58
|
name: mock_redis
|
45
59
|
requirement: !ruby/object:Gem::Requirement
|
@@ -115,6 +129,7 @@ files:
|
|
115
129
|
- ".gitignore"
|
116
130
|
- ".rspec"
|
117
131
|
- ".rubocop.yml"
|
132
|
+
- CHANGELOG.md
|
118
133
|
- CODE_OF_CONDUCT.md
|
119
134
|
- Gemfile
|
120
135
|
- LICENSE.txt
|
@@ -127,6 +142,7 @@ files:
|
|
127
142
|
- lib/muffin_man/catalog_items/v20201201.rb
|
128
143
|
- lib/muffin_man/finances/v0.rb
|
129
144
|
- lib/muffin_man/lwa/auth_helper.rb
|
145
|
+
- lib/muffin_man/orders/v0.rb
|
130
146
|
- lib/muffin_man/reports/v20210630.rb
|
131
147
|
- lib/muffin_man/solicitations/v1.rb
|
132
148
|
- lib/muffin_man/sp_api_client.rb
|
@@ -151,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
167
|
- !ruby/object:Gem::Version
|
152
168
|
version: '0'
|
153
169
|
requirements: []
|
154
|
-
rubygems_version: 3.
|
170
|
+
rubygems_version: 3.2.22
|
155
171
|
signing_key:
|
156
172
|
specification_version: 4
|
157
173
|
summary: Amazon Selling Partner API client
|