peddler 0.5.3 → 0.6.0

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.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +237 -8
  3. data/lib/mws/feeds.rb +1 -0
  4. data/lib/mws/feeds/client.rb +97 -0
  5. data/lib/mws/feeds/parsers/feed.rb +14 -0
  6. data/lib/mws/feeds/parsers/feed_submission.rb +25 -0
  7. data/lib/mws/feeds/parsers/feed_submission_count.rb +13 -0
  8. data/lib/mws/feeds/parsers/feed_submission_list.rb +20 -0
  9. data/lib/mws/feeds/parsers/feed_submission_result.rb +10 -0
  10. data/lib/mws/feeds/parsers/feed_submissions.rb +18 -0
  11. data/lib/mws/feeds/requests/feed.rb +38 -0
  12. data/lib/mws/feeds/requests/feed_submission_count.rb +20 -0
  13. data/lib/mws/feeds/requests/feed_submission_list.rb +28 -0
  14. data/lib/mws/feeds/requests/feed_submission_result.rb +18 -0
  15. data/lib/mws/feeds/requests/feed_submissions.rb +20 -0
  16. data/lib/mws/fulfillment_inbound_shipment/client.rb +7 -0
  17. data/lib/mws/fulfillment_inventory/client.rb +7 -0
  18. data/lib/mws/fulfillment_outbound_shipment/client.rb +7 -0
  19. data/lib/mws/off_amazon_payments/client.rb +7 -0
  20. data/lib/mws/orders.rb +1 -0
  21. data/lib/mws/orders/client.rb +88 -0
  22. data/lib/mws/orders/parsers/invoice_data.rb +25 -0
  23. data/lib/mws/orders/parsers/order.rb +113 -0
  24. data/lib/mws/orders/parsers/order_item.rb +110 -0
  25. data/lib/mws/orders/parsers/order_items.rb +20 -0
  26. data/lib/mws/orders/parsers/orders.rb +20 -0
  27. data/lib/mws/orders/parsers/payment_execution_detail.rb +20 -0
  28. data/lib/mws/orders/parsers/payment_execution_detail_item.rb +17 -0
  29. data/lib/mws/orders/parsers/service_status.rb +36 -0
  30. data/lib/mws/orders/parsers/service_status_message.rb +17 -0
  31. data/lib/mws/orders/parsers/shipping_address.rb +37 -0
  32. data/lib/mws/orders/requests/order_items.rb +26 -0
  33. data/lib/mws/orders/requests/orders.rb +39 -0
  34. data/lib/mws/orders/requests/service_status.rb +15 -0
  35. data/lib/mws/products/client.rb +7 -0
  36. data/lib/mws/recommendations/client.rb +7 -0
  37. data/lib/mws/reports/client.rb +6 -0
  38. data/lib/mws/sellers/client.rb +7 -0
  39. data/lib/mws/subscriptions/client.rb +7 -0
  40. data/lib/peddler.rb +11 -1
  41. data/lib/peddler/client.rb +62 -0
  42. data/lib/peddler/parsers/base.rb +15 -0
  43. data/lib/peddler/parsers/collection.rb +23 -0
  44. data/lib/peddler/parsers/model.rb +43 -0
  45. data/lib/peddler/parsers/text.rb +13 -0
  46. data/lib/peddler/parsers/xml.rb +25 -0
  47. data/lib/peddler/request.rb +50 -0
  48. data/lib/peddler/request/parameters.rb +56 -0
  49. data/lib/peddler/request/structured_list.rb +43 -0
  50. data/lib/peddler/response_wrapper.rb +32 -0
  51. data/lib/peddler/version.rb +1 -1
  52. data/test/fixtures/feeds/feed_submission.xml +14 -0
  53. data/test/fixtures/feeds/feed_submission_count.xml +9 -0
  54. data/test/fixtures/feeds/feed_submission_list.xml +17 -0
  55. data/test/fixtures/feeds/feed_submissions.xml +15 -0
  56. data/test/fixtures/mws.yml +8 -0
  57. data/test/fixtures/mws.yml.example +4 -0
  58. data/test/fixtures/orders/order_items.xml +83 -0
  59. data/test/fixtures/orders/orders.xml +109 -0
  60. data/test/fixtures/orders/service_status.xml +19 -0
  61. data/test/helper.rb +5 -0
  62. data/test/integration/feeds/test_feed_submission_count.rb +13 -0
  63. data/test/integration/feeds/test_feed_submission_list.rb +15 -0
  64. data/test/integration/feeds/test_feed_submission_result.rb +15 -0
  65. data/test/integration/orders/test_order_items.rb +19 -0
  66. data/test/integration/orders/test_orders.rb +20 -0
  67. data/test/integration/orders/test_service_status.rb +12 -0
  68. data/test/integration_helper.rb +16 -0
  69. data/test/mws/feeds/parsers/test_feed.rb +13 -0
  70. data/test/mws/feeds/parsers/test_feed_submission.rb +25 -0
  71. data/test/mws/feeds/parsers/test_feed_submission_count.rb +13 -0
  72. data/test/mws/feeds/parsers/test_feed_submission_list.rb +14 -0
  73. data/test/mws/feeds/parsers/test_feed_submission_result.rb +13 -0
  74. data/test/mws/feeds/parsers/test_feed_submissions.rb +17 -0
  75. data/test/mws/feeds/requests/test_feed.rb +63 -0
  76. data/test/mws/feeds/requests/test_feed_submission_count.rb +23 -0
  77. data/test/mws/feeds/requests/test_feed_submission_list.rb +40 -0
  78. data/test/mws/feeds/requests/test_feed_submissions.rb +29 -0
  79. data/test/mws/orders/parsers/test_order.rb +86 -0
  80. data/test/mws/orders/parsers/test_order_item.rb +69 -0
  81. data/test/mws/orders/parsers/test_order_items.rb +14 -0
  82. data/test/mws/orders/parsers/test_orders.rb +14 -0
  83. data/test/mws/orders/parsers/test_payment_execution_detail.rb +14 -0
  84. data/test/mws/orders/parsers/test_payment_execution_detail_item.rb +17 -0
  85. data/test/mws/orders/parsers/test_service_status.rb +39 -0
  86. data/test/mws/orders/parsers/test_service_status_message.rb +17 -0
  87. data/test/mws/orders/parsers/test_shipping_address.rb +36 -0
  88. data/test/mws/orders/requests/test_order_items.rb +39 -0
  89. data/test/mws/orders/requests/test_orders.rb +49 -0
  90. data/test/mws/orders/requests/test_service_status.rb +25 -0
  91. data/test/parser_helper.rb +11 -0
  92. data/test/peddler/parsers/test_collection.rb +8 -0
  93. data/test/peddler/parsers/test_model.rb +34 -0
  94. data/test/peddler/request/test_parameters.rb +35 -0
  95. data/test/peddler/request/test_structured_list.rb +18 -0
  96. data/test/peddler/test_client.rb +42 -0
  97. data/test/request_helper.rb +20 -0
  98. metadata +213 -10
  99. data/lib/peddler/apis.rb +0 -45
  100. data/lib/peddler/service.rb +0 -83
  101. data/test/service_test.rb +0 -42
  102. data/test/test_helper.rb +0 -3
@@ -0,0 +1,18 @@
1
+ require 'helper'
2
+ require 'peddler/request/structured_list'
3
+
4
+ class PeddlerRequestStructuredListTest < MiniTest::Test
5
+ def setup
6
+ @structured_list = Peddler::Request::StructuredList.new(:order_status)
7
+ end
8
+
9
+ def test_builds_a_structured_list_for_a_single_value
10
+ exp = { 'OrderStatus.Status.1' => 'foo' }
11
+ assert_equal(exp, @structured_list.build('foo'))
12
+ end
13
+
14
+ def test_builds_a_structured_list_for_an_array_of_values
15
+ exp = { 'OrderStatus.Status.1' => 'foo', 'OrderStatus.Status.2' => 'bar' }
16
+ assert_equal(exp, @structured_list.build(%w(foo bar)))
17
+ end
18
+ end
@@ -0,0 +1,42 @@
1
+ require 'helper'
2
+ require 'peddler/client'
3
+
4
+ class PeddlerClientTest < MiniTest::Test
5
+ def setup
6
+ @klass = Class.new(Peddler::Client)
7
+ @client = @klass.new('US', 'key', 'secret', 'merchant_id')
8
+ end
9
+
10
+ def test_configures_path
11
+ @klass.path('Foo')
12
+ assert @client.endpoint.match(/Foo$/)
13
+ end
14
+
15
+ def test_has_user_agent
16
+ refute @client.connection.data[:headers].empty?
17
+ end
18
+
19
+ def test_returns_marketplace_ids
20
+ refute_equal @client.marketplace_id('US'), @client.marketplace_id('GB')
21
+ end
22
+
23
+ def test_returns_default_marketplace_id
24
+ assert_equal @client.marketplace_id, @client.marketplace_id('US')
25
+ end
26
+
27
+ def test_inherits_parent_params
28
+ assert_equal Peddler::Client.params, @klass.params
29
+ end
30
+
31
+ def test_defines_constants_on_service
32
+ refute_nil @klass.const_get(:HOSTS)
33
+ end
34
+
35
+ def test_has_a_key
36
+ refute_nil @client.aws_access_key_id
37
+ end
38
+
39
+ def test_has_a_secret
40
+ refute_nil @client.aws_secret_access_key
41
+ end
42
+ end
@@ -0,0 +1,20 @@
1
+ require 'helper'
2
+
3
+ class RequestTest < Minitest::Test
4
+ def mock_response_body
5
+ raise NotImplementedError
6
+ end
7
+
8
+ def mock_response
9
+ res = Minitest::Mock.new
10
+ res.expect(:body, mock_response_body)
11
+
12
+ Peddler::ResponseWrapper.new(res)
13
+ end
14
+
15
+ def mock_client
16
+ client = Minitest::Mock.new
17
+ client.expect(:marketplace_id, '123456')
18
+ client.expect(:post, mock_response, [Hash])
19
+ end
20
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peddler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hakan Ensari
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-05 00:00:00.000000000 Z
11
+ date: 2013-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jeff
@@ -24,8 +24,78 @@ dependencies:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.7.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: money
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '5.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '5.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: nokogiri
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '1.5'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '1.5'
55
+ - !ruby/object:Gem::Dependency
56
+ name: structure
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.25.1
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 0.25.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard-minitest
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
27
83
  - !ruby/object:Gem::Dependency
28
84
  name: minitest
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '5.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '5.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
29
99
  requirement: !ruby/object:Gem::Requirement
30
100
  requirements:
31
101
  - - '>='
@@ -52,21 +122,110 @@ dependencies:
52
122
  - - '>='
53
123
  - !ruby/object:Gem::Version
54
124
  version: '0'
55
- description: A light-weight wrapper to the Amazon Marketplace Web Service (MWS) API
125
+ description: A Ruby interface to the Amazon Marketplace Web Service (MWS) APIs
56
126
  email:
57
127
  - hakan.ensari@papercavalier.com
58
128
  executables: []
59
129
  extensions: []
60
130
  extra_rdoc_files: []
61
131
  files:
62
- - lib/peddler/apis.rb
63
- - lib/peddler/service.rb
132
+ - lib/mws/feeds/client.rb
133
+ - lib/mws/feeds/parsers/feed.rb
134
+ - lib/mws/feeds/parsers/feed_submission.rb
135
+ - lib/mws/feeds/parsers/feed_submission_count.rb
136
+ - lib/mws/feeds/parsers/feed_submission_list.rb
137
+ - lib/mws/feeds/parsers/feed_submission_result.rb
138
+ - lib/mws/feeds/parsers/feed_submissions.rb
139
+ - lib/mws/feeds/requests/feed.rb
140
+ - lib/mws/feeds/requests/feed_submission_count.rb
141
+ - lib/mws/feeds/requests/feed_submission_list.rb
142
+ - lib/mws/feeds/requests/feed_submission_result.rb
143
+ - lib/mws/feeds/requests/feed_submissions.rb
144
+ - lib/mws/feeds.rb
145
+ - lib/mws/fulfillment_inbound_shipment/client.rb
146
+ - lib/mws/fulfillment_inventory/client.rb
147
+ - lib/mws/fulfillment_outbound_shipment/client.rb
148
+ - lib/mws/off_amazon_payments/client.rb
149
+ - lib/mws/orders/client.rb
150
+ - lib/mws/orders/parsers/invoice_data.rb
151
+ - lib/mws/orders/parsers/order.rb
152
+ - lib/mws/orders/parsers/order_item.rb
153
+ - lib/mws/orders/parsers/order_items.rb
154
+ - lib/mws/orders/parsers/orders.rb
155
+ - lib/mws/orders/parsers/payment_execution_detail.rb
156
+ - lib/mws/orders/parsers/payment_execution_detail_item.rb
157
+ - lib/mws/orders/parsers/service_status.rb
158
+ - lib/mws/orders/parsers/service_status_message.rb
159
+ - lib/mws/orders/parsers/shipping_address.rb
160
+ - lib/mws/orders/requests/order_items.rb
161
+ - lib/mws/orders/requests/orders.rb
162
+ - lib/mws/orders/requests/service_status.rb
163
+ - lib/mws/orders.rb
164
+ - lib/mws/products/client.rb
165
+ - lib/mws/recommendations/client.rb
166
+ - lib/mws/reports/client.rb
167
+ - lib/mws/sellers/client.rb
168
+ - lib/mws/subscriptions/client.rb
169
+ - lib/peddler/client.rb
170
+ - lib/peddler/parsers/base.rb
171
+ - lib/peddler/parsers/collection.rb
172
+ - lib/peddler/parsers/model.rb
173
+ - lib/peddler/parsers/text.rb
174
+ - lib/peddler/parsers/xml.rb
175
+ - lib/peddler/request/parameters.rb
176
+ - lib/peddler/request/structured_list.rb
177
+ - lib/peddler/request.rb
178
+ - lib/peddler/response_wrapper.rb
64
179
  - lib/peddler/version.rb
65
180
  - lib/peddler.rb
66
181
  - LICENSE
67
182
  - README.md
68
- - test/service_test.rb
69
- - test/test_helper.rb
183
+ - test/fixtures/feeds/feed_submission.xml
184
+ - test/fixtures/feeds/feed_submission_count.xml
185
+ - test/fixtures/feeds/feed_submission_list.xml
186
+ - test/fixtures/feeds/feed_submissions.xml
187
+ - test/fixtures/mws.yml
188
+ - test/fixtures/mws.yml.example
189
+ - test/fixtures/orders/order_items.xml
190
+ - test/fixtures/orders/orders.xml
191
+ - test/fixtures/orders/service_status.xml
192
+ - test/helper.rb
193
+ - test/integration/feeds/test_feed_submission_count.rb
194
+ - test/integration/feeds/test_feed_submission_list.rb
195
+ - test/integration/feeds/test_feed_submission_result.rb
196
+ - test/integration/orders/test_order_items.rb
197
+ - test/integration/orders/test_orders.rb
198
+ - test/integration/orders/test_service_status.rb
199
+ - test/integration_helper.rb
200
+ - test/mws/feeds/parsers/test_feed.rb
201
+ - test/mws/feeds/parsers/test_feed_submission.rb
202
+ - test/mws/feeds/parsers/test_feed_submission_count.rb
203
+ - test/mws/feeds/parsers/test_feed_submission_list.rb
204
+ - test/mws/feeds/parsers/test_feed_submission_result.rb
205
+ - test/mws/feeds/parsers/test_feed_submissions.rb
206
+ - test/mws/feeds/requests/test_feed.rb
207
+ - test/mws/feeds/requests/test_feed_submission_count.rb
208
+ - test/mws/feeds/requests/test_feed_submission_list.rb
209
+ - test/mws/feeds/requests/test_feed_submissions.rb
210
+ - test/mws/orders/parsers/test_order.rb
211
+ - test/mws/orders/parsers/test_order_item.rb
212
+ - test/mws/orders/parsers/test_order_items.rb
213
+ - test/mws/orders/parsers/test_orders.rb
214
+ - test/mws/orders/parsers/test_payment_execution_detail.rb
215
+ - test/mws/orders/parsers/test_payment_execution_detail_item.rb
216
+ - test/mws/orders/parsers/test_service_status.rb
217
+ - test/mws/orders/parsers/test_service_status_message.rb
218
+ - test/mws/orders/parsers/test_shipping_address.rb
219
+ - test/mws/orders/requests/test_order_items.rb
220
+ - test/mws/orders/requests/test_orders.rb
221
+ - test/mws/orders/requests/test_service_status.rb
222
+ - test/parser_helper.rb
223
+ - test/peddler/parsers/test_collection.rb
224
+ - test/peddler/parsers/test_model.rb
225
+ - test/peddler/request/test_parameters.rb
226
+ - test/peddler/request/test_structured_list.rb
227
+ - test/peddler/test_client.rb
228
+ - test/request_helper.rb
70
229
  homepage: http://github.com/papercavalier/peddler
71
230
  licenses: []
72
231
  metadata: {}
@@ -89,7 +248,51 @@ rubyforge_project:
89
248
  rubygems_version: 2.0.3
90
249
  signing_key:
91
250
  specification_version: 4
92
- summary: Wraps the Amazon Marketplace Web Service API
251
+ summary: Wraps the Amazon MWS APIs
93
252
  test_files:
94
- - test/service_test.rb
95
- - test/test_helper.rb
253
+ - test/fixtures/feeds/feed_submission.xml
254
+ - test/fixtures/feeds/feed_submission_count.xml
255
+ - test/fixtures/feeds/feed_submission_list.xml
256
+ - test/fixtures/feeds/feed_submissions.xml
257
+ - test/fixtures/mws.yml
258
+ - test/fixtures/mws.yml.example
259
+ - test/fixtures/orders/order_items.xml
260
+ - test/fixtures/orders/orders.xml
261
+ - test/fixtures/orders/service_status.xml
262
+ - test/helper.rb
263
+ - test/integration/feeds/test_feed_submission_count.rb
264
+ - test/integration/feeds/test_feed_submission_list.rb
265
+ - test/integration/feeds/test_feed_submission_result.rb
266
+ - test/integration/orders/test_order_items.rb
267
+ - test/integration/orders/test_orders.rb
268
+ - test/integration/orders/test_service_status.rb
269
+ - test/integration_helper.rb
270
+ - test/mws/feeds/parsers/test_feed.rb
271
+ - test/mws/feeds/parsers/test_feed_submission.rb
272
+ - test/mws/feeds/parsers/test_feed_submission_count.rb
273
+ - test/mws/feeds/parsers/test_feed_submission_list.rb
274
+ - test/mws/feeds/parsers/test_feed_submission_result.rb
275
+ - test/mws/feeds/parsers/test_feed_submissions.rb
276
+ - test/mws/feeds/requests/test_feed.rb
277
+ - test/mws/feeds/requests/test_feed_submission_count.rb
278
+ - test/mws/feeds/requests/test_feed_submission_list.rb
279
+ - test/mws/feeds/requests/test_feed_submissions.rb
280
+ - test/mws/orders/parsers/test_order.rb
281
+ - test/mws/orders/parsers/test_order_item.rb
282
+ - test/mws/orders/parsers/test_order_items.rb
283
+ - test/mws/orders/parsers/test_orders.rb
284
+ - test/mws/orders/parsers/test_payment_execution_detail.rb
285
+ - test/mws/orders/parsers/test_payment_execution_detail_item.rb
286
+ - test/mws/orders/parsers/test_service_status.rb
287
+ - test/mws/orders/parsers/test_service_status_message.rb
288
+ - test/mws/orders/parsers/test_shipping_address.rb
289
+ - test/mws/orders/requests/test_order_items.rb
290
+ - test/mws/orders/requests/test_orders.rb
291
+ - test/mws/orders/requests/test_service_status.rb
292
+ - test/parser_helper.rb
293
+ - test/peddler/parsers/test_collection.rb
294
+ - test/peddler/parsers/test_model.rb
295
+ - test/peddler/request/test_parameters.rb
296
+ - test/peddler/request/test_structured_list.rb
297
+ - test/peddler/test_client.rb
298
+ - test/request_helper.rb
data/lib/peddler/apis.rb DELETED
@@ -1,45 +0,0 @@
1
- require 'peddler/service'
2
-
3
- module Peddler
4
- class Feeds < Service
5
- end
6
-
7
- class FulfillmentInboundShipment < Service
8
- path 'FulfillmentInboundShipment/2010-10-01'
9
- end
10
-
11
- class FulfillmentInventory < Service
12
- path 'FulfillmentInventory/2010-10-01'
13
- end
14
-
15
- class FulfillmentOutboundShipment < Service
16
- path 'FulfillmentOutboundShipment/2010-10-01'
17
- end
18
-
19
- class OffAmazonPayments < Service
20
- path 'OffAmazonPayments/2013-01-01/'
21
- end
22
-
23
- class Orders < Service
24
- path 'Orders/2011-01-01'
25
- end
26
-
27
- class Products < Service
28
- path 'Products/2011-10-01'
29
- end
30
-
31
- class Recommendations < Service
32
- path 'Recommendations/2013-04-01'
33
- end
34
-
35
- class Reports < Service
36
- end
37
-
38
- class Sellers < Service
39
- path 'Sellers/2011-07-01'
40
- end
41
-
42
- class Subscriptions < Service
43
- path 'Subscriptions/2013-07-01'
44
- end
45
- end
@@ -1,83 +0,0 @@
1
- require 'jeff'
2
-
3
- module Peddler
4
- # Service is an abstract wrapper around a Marketplace Web Services (MWS)
5
- # endpoint.
6
- class Service
7
- include Jeff
8
-
9
- attr_accessor :country, :seller_id
10
-
11
- # The initializer takes four arguments:
12
- #
13
- # country - The String ISO 3166-1 two-letter country code of
14
- # the base marketplace of the seller.
15
- # aws_access_key_id - The String AWS access key id.
16
- # aws_secret_access_key - The String AWS secret access key.
17
- # seller_id - The String MWS merchant id.
18
- #
19
- # These arguments are optional and can be set individually later.
20
- def initialize(country = nil, aws_access_key_id = nil, aws_secret_access_key = nil, seller_id = nil)
21
- @country = country
22
- @aws_access_key_id = aws_access_key_id
23
- @aws_secret_access_key = aws_secret_access_key
24
- @seller_id = seller_id
25
- end
26
-
27
- # A list of MWS hosts.
28
- HOSTS = {
29
- 'CA' => 'mws.amazonservices.ca',
30
- 'CN' => 'mws.amazonservices.com.cn',
31
- 'DE' => 'mws-eu.amazonservices.com',
32
- 'ES' => 'mws-eu.amazonservices.com',
33
- 'FR' => 'mws-eu.amazonservices.com',
34
- 'GB' => 'mws-eu.amazonservices.com',
35
- 'IN' => 'mws.amazonservices.in',
36
- 'IT' => 'mws-eu.amazonservices.com',
37
- 'JP' => 'mws.amazonservices.jp',
38
- 'US' => 'mws.amazonservices.com'
39
- }
40
-
41
- # A list of marketplace ids.
42
- MARKETPLACE_IDS = {
43
- 'CA' => 'A2EUQ1WTGCTBG2',
44
- 'CN' => 'AAHKV2X7AFYLW',
45
- 'DE' => 'A1PA6795UKMFR9',
46
- 'ES' => 'A1RKKUPIHCS9HS',
47
- 'FR' => 'A13V1IB3VIYZZH',
48
- 'GB' => 'A1F83G8C2ARO7P',
49
- 'IN' => 'A21TJRUUN4KGV',
50
- 'IT' => 'APJ6JRA9NG5V4',
51
- 'JP' => 'A1VC38T7YXB528',
52
- 'US' => 'ATVPDKIKX0DER'
53
- }
54
-
55
- # Gets/Sets the path of the MWS endpoint.
56
- #
57
- # path - A String path (default: nil).
58
- def self.path(path = nil)
59
- path ? @path = path : @path
60
- end
61
-
62
- def self.inherited(base)
63
- base.params(params)
64
- base.path(path)
65
- end
66
-
67
- params('SellerId' => -> { seller_id })
68
-
69
- # Returns the String MWS endpoint.
70
- def endpoint
71
- "https://#{HOSTS.fetch(country)}/#{self.class.path}"
72
- end
73
-
74
- # Get the marketplace id for a given country.
75
- #
76
- # country - A String ISO 3166-1 two-letter country code.
77
- #
78
- # Returns a String marketplace id.
79
- def marketplace_id(country)
80
- MARKETPLACE_IDS.fetch(country)
81
- end
82
- end
83
- end