peddler 1.6.5 → 1.6.6

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
  SHA1:
3
- metadata.gz: e96842d3eb385391fb5732931bd8d65afeca33f4
4
- data.tar.gz: 36e28997e1c35ba8673b90bc27d2f58e21125084
3
+ metadata.gz: f768c3add9b97c6d2af14872792feb553197fdb8
4
+ data.tar.gz: f33a7fd7ca78654a866191f0d2b5ac17629d0b38
5
5
  SHA512:
6
- metadata.gz: f9cfa3d9f6abd4bba7ae2b3b09c16ffd5c0f3fcbc8e7331cd7333eb5d61e5ea2bb4939afc9c03fad72e7cb5980899f0c61b7a63c2916d12b039289c3501b2014
7
- data.tar.gz: 32dcdf2f84b098cf3784136f856085e004f5332dfd753a2df0bfe1ec49f17e3d61cde3799fcab3b314fe59e199d6fd18c6c150a6cd9d594ee7273a533f9cbbe2
6
+ metadata.gz: 289d38d3d615f8f99c6695b4a665fdc6a464b104df4f23fc7bfcb4074c9689d02bead5e8418c3f8746e13ffb1f8cf0e94b021cbe9d8c65d2f614d3d946ba71d9
7
+ data.tar.gz: 628fdb1df72fe2e9164fb90c2dc4a7cbdd2307409e1b5ae9870756917c982474c3112ce33e212b38731e3e0412ae8b83719fef5bfe8f4b6c1f1e35b70ebe4b23
data/README.md CHANGED
@@ -76,7 +76,7 @@ Peddler wraps successful responses in a parser that handles both XML documents a
76
76
  ```ruby
77
77
  parser = client.get_service_status
78
78
  parser.parse # will return a Hash object
79
- parser.dig('Status') # delegates to Hash#dig for convenience
79
+ parser.dig('Status') # delegates to Hash#dig if available
80
80
  ```
81
81
 
82
82
  You can swap the default parser with a purpose-built abstraction.
@@ -175,7 +175,7 @@ module Peddler
175
175
  private
176
176
 
177
177
  def find_marketplace
178
- Marketplace.new(primary_marketplace_id)
178
+ Marketplace.find(primary_marketplace_id)
179
179
  end
180
180
 
181
181
  def clear_content!
@@ -3,15 +3,13 @@
3
3
  module Peddler
4
4
  # @api private
5
5
  module Errors
6
- # Known codes
6
+ # Here I curate error classes I see value in creating up front so we can use
7
+ # them for control flow. All other errors will be created at runtime.
7
8
  CODES = %w[
8
9
  AccessDenied
9
10
  InternalError
10
11
  InvalidAccessKeyId
11
12
  InvalidMarketplace
12
- InvalidParameterValue
13
- InvalidRequest
14
- MalformedInput
15
13
  QuotaExceeded
16
14
  RequestThrottled
17
15
  ].freeze
@@ -3,53 +3,21 @@
3
3
  module Peddler
4
4
  # @api private
5
5
  # @see https://docs.developer.amazonservices.com/en_US/dev_guide/DG_Endpoints.html
6
- class Marketplace
7
- IDS = {
8
- 'CA' => 'A2EUQ1WTGCTBG2',
9
- 'MX' => 'A1AM78C64UM0Y8',
10
- 'US' => 'ATVPDKIKX0DER',
11
- 'BR' => 'A2Q3Y263D00KWC',
12
- 'DE' => 'A1PA6795UKMFR9',
13
- 'ES' => 'A1RKKUPIHCS9HS',
14
- 'FR' => 'A13V1IB3VIYZZH',
15
- 'IT' => 'APJ6JRA9NG5V4',
16
- 'UK' => 'A1F83G8C2ARO7P',
17
- 'IN' => 'A21TJRUUN4KGV',
18
- 'AU' => 'A39IBJ37TRP1C6',
19
- 'JP' => 'A1VC38T7YXB528',
20
- 'CN' => 'AAHKV2X7AFYLW'
21
- }.freeze
22
-
23
- HOSTS = {
24
- 'CA' => 'mws.amazonservices.com',
25
- 'MX' => 'mws.amazonservices.com',
26
- 'US' => 'mws.amazonservices.com',
27
- 'BR' => 'mws.amazonservices.com',
28
- 'DE' => 'mws-eu.amazonservices.com',
29
- 'ES' => 'mws-eu.amazonservices.com',
30
- 'FR' => 'mws-eu.amazonservices.com',
31
- 'IT' => 'mws-eu.amazonservices.com',
32
- 'UK' => 'mws-eu.amazonservices.com',
33
- 'IN' => 'mws.amazonservices.in',
34
- 'AU' => 'mws.amazonservices.com.au',
35
- 'JP' => 'mws.amazonservices.jp',
36
- 'CN' => 'mws.amazonservices.com.cn'
37
- }.freeze
38
-
39
- BadId = Class.new(StandardError)
40
-
41
- attr_reader :id
42
-
43
- def initialize(id)
44
- @id = id || raise(BadId, 'missing MarketplaceId')
45
- end
46
-
47
- def country_code
48
- @country_code ||= find_country_code
49
- end
50
-
51
- def host
52
- @host ||= find_host
6
+ Marketplace = Struct.new(:id, :country_code, :host) do
7
+ class << self
8
+ attr_reader :all
9
+
10
+ def find(id)
11
+ all.find { |marketplace| marketplace.id == id } || begin
12
+ message = if id
13
+ %("#{id}" is not a valid MarketplaceId)
14
+ else
15
+ 'missing MarketplaceId'
16
+ end
17
+
18
+ raise ArgumentError, message
19
+ end
20
+ end
53
21
  end
54
22
 
55
23
  # Caveat: We use the supersets Windows-31J and CP1252 in place of Shift_JIS
@@ -67,14 +35,22 @@ module Peddler
67
35
  end
68
36
  end
69
37
 
70
- private
71
-
72
- def find_country_code
73
- IDS.key(id) || raise(BadId, %("#{id}" is not a valid MarketplaceId))
74
- end
75
-
76
- def find_host
77
- HOSTS[country_code]
38
+ @all = [
39
+ ['A2EUQ1WTGCTBG2', 'CA', 'mws.amazonservices.com'],
40
+ ['A1AM78C64UM0Y8', 'MX', 'mws.amazonservices.com'],
41
+ ['ATVPDKIKX0DER', 'US', 'mws.amazonservices.com'],
42
+ ['A2Q3Y263D00KWC', 'BR', 'mws.amazonservices.com'],
43
+ ['A1PA6795UKMFR9', 'DE', 'mws-eu.amazonservices.com'],
44
+ ['A1RKKUPIHCS9HS', 'ES', 'mws-eu.amazonservices.com'],
45
+ ['A13V1IB3VIYZZH', 'FR', 'mws-eu.amazonservices.com'],
46
+ ['APJ6JRA9NG5V4', 'IT', 'mws-eu.amazonservices.com'],
47
+ ['A1F83G8C2ARO7P', 'UK', 'mws-eu.amazonservices.com'],
48
+ ['A21TJRUUN4KGV', 'IN', 'mws.amazonservices.in'],
49
+ ['A39IBJ37TRP1C6', 'AU', 'mws.amazonservices.com.au'],
50
+ ['A1VC38T7YXB528', 'JP', 'mws.amazonservices.jp'],
51
+ ['AAHKV2X7AFYLW', 'CN', 'mws.amazonservices.com.cn']
52
+ ].map do |values|
53
+ new(*values)
78
54
  end
79
55
  end
80
56
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Peddler
4
- VERSION = '1.6.5'
4
+ VERSION = '1.6.6'
5
5
  end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'delegate'
4
- require 'dig_rb'
5
4
  require 'forwardable'
6
5
  require 'peddler/headers'
7
6
  require 'multi_xml'
@@ -12,7 +11,7 @@ module Peddler
12
11
  extend Forwardable
13
12
  include Headers
14
13
 
15
- def_delegator :parse, :dig
14
+ def_delegator :parse, :dig if Hash.method_defined?(:dig)
16
15
 
17
16
  def parse
18
17
  @data ||= find_data
data/test/helper.rb CHANGED
@@ -1,13 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- if RUBY_ENGINE == 'ruby'
4
- require 'simplecov'
5
-
6
- SimpleCov.start do
7
- add_filter '/test/'
8
- end
3
+ # Keep SimpleCov at top.
4
+ require 'simplecov'
5
+ SimpleCov.start do
6
+ add_filter '/test/'
9
7
  end
10
8
 
9
+ require 'backports/2.3.0/hash/dig'
11
10
  require 'minitest/autorun'
12
11
  require 'minitest/focus'
13
12
  begin
@@ -5,31 +5,30 @@ require 'peddler/marketplace'
5
5
 
6
6
  class TestPeddlerMarketplace < MiniTest::Test
7
7
  def setup
8
- @marketplace = Peddler::Marketplace.new('ATVPDKIKX0DER')
8
+ @marketplace = Peddler::Marketplace.find('ATVPDKIKX0DER')
9
9
  end
10
10
 
11
- def test_has_a_country_code
11
+ def test_country_code
12
12
  assert @marketplace.country_code
13
13
  end
14
14
 
15
- def test_has_a_host
15
+ def test_host
16
16
  assert @marketplace.host
17
17
  end
18
18
 
19
- def test_has_an_encoding
19
+ def test_encoding
20
20
  assert @marketplace.encoding
21
21
  end
22
22
 
23
23
  def test_guard_against_missing_marketplace_id
24
- assert_raises(Peddler::Marketplace::BadId, 'missing MarketplaceId') do
25
- Peddler::Marketplace.new(nil)
24
+ assert_raises(ArgumentError, 'missing ID') do
25
+ Peddler::Marketplace.find(nil)
26
26
  end
27
27
  end
28
28
 
29
- def test_guard_against_bad_marketplace_id
30
- assert_raises(Peddler::Marketplace::BadId, '"123" is not a valid MarketplaceId') do
31
- marketplace = Peddler::Marketplace.new('123')
32
- marketplace.host
29
+ def test_guard_against_invalid_marketplace_id
30
+ assert_raises(ArgumentError, '"123" is not a valid ID') do
31
+ Peddler::Marketplace.find('123')
33
32
  end
34
33
  end
35
34
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peddler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.5
4
+ version: 1.6.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hakan Ensari
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-08 00:00:00.000000000 Z
11
+ date: 2018-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: dig_rb
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: excon
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -42,22 +28,16 @@ dependencies:
42
28
  name: jeff
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: 1.5.2
48
- - - "<"
31
+ - - "~>"
49
32
  - !ruby/object:Gem::Version
50
- version: '3.0'
33
+ version: '2.0'
51
34
  type: :runtime
52
35
  prerelease: false
53
36
  version_requirements: !ruby/object:Gem::Requirement
54
37
  requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- version: 1.5.2
58
- - - "<"
38
+ - - "~>"
59
39
  - !ruby/object:Gem::Version
60
- version: '3.0'
40
+ version: '2.0'
61
41
  - !ruby/object:Gem::Dependency
62
42
  name: multi_xml
63
43
  requirement: !ruby/object:Gem::Requirement
@@ -216,70 +196,70 @@ signing_key:
216
196
  specification_version: 4
217
197
  summary: Wraps the Amazon MWS APIs
218
198
  test_files:
219
- - test/unit/peddler/test_headers.rb
220
- - test/unit/peddler/test_vcr_matcher.rb
221
- - test/unit/peddler/test_marketplace.rb
222
- - test/unit/peddler/test_operation.rb
223
- - test/unit/peddler/test_structured_list.rb
224
- - test/unit/peddler/test_client.rb
225
- - test/unit/peddler/test_xml_response_parser.rb
226
- - test/unit/peddler/test_xml_parser.rb
227
- - test/unit/peddler/test_flat_file_parser.rb
228
- - test/unit/peddler/errors/test_error.rb
229
- - test/unit/peddler/errors/test_builder.rb
230
- - test/unit/peddler/errors/test_handler.rb
231
- - test/unit/peddler/errors/test_parser.rb
232
- - test/unit/peddler/test_parser.rb
199
+ - test/credentials.rb
200
+ - test/helper.rb
201
+ - test/integration/test_errors.rb
202
+ - test/integration/test_feeds.rb
203
+ - test/integration/test_fulfillment_inbound_shipment.rb
204
+ - test/integration/test_fulfillment_inventory.rb
205
+ - test/integration/test_fulfillment_outbound_shipment.rb
206
+ - test/integration/test_merchant_fulfillment.rb
207
+ - test/integration/test_multibyte_queries.rb
208
+ - test/integration/test_mws_headers.rb
209
+ - test/integration/test_off_amazon_payments.rb
210
+ - test/integration/test_orders.rb
211
+ - test/integration/test_products.rb
212
+ - test/integration/test_recommendations.rb
213
+ - test/integration/test_reports.rb
214
+ - test/integration/test_sellers.rb
215
+ - test/integration/test_subscriptions.rb
216
+ - test/integration_helper.rb
217
+ - test/mws.yml.example
218
+ - test/null_client.rb
219
+ - test/recorder.rb
220
+ - test/unit/mws/test_feeds_client.rb
233
221
  - test/unit/mws/test_finances_client.rb
234
- - test/unit/mws/test_sellers_client.rb
235
222
  - test/unit/mws/test_fulfillment_inbound_shipment_client.rb
223
+ - test/unit/mws/test_fulfillment_inventory_client.rb
224
+ - test/unit/mws/test_fulfillment_outbound_shipment_client.rb
236
225
  - test/unit/mws/test_merchant_fulfillment_client.rb
237
- - test/unit/mws/test_subscriptions_client.rb
238
226
  - test/unit/mws/test_off_amazon_payments_client.rb
239
- - test/unit/mws/test_reports_client.rb
240
- - test/unit/mws/test_fulfillment_outbound_shipment_client.rb
241
227
  - test/unit/mws/test_orders_client.rb
242
228
  - test/unit/mws/test_products_client.rb
243
229
  - test/unit/mws/test_recommendations_client.rb
244
- - test/unit/mws/test_fulfillment_inventory_client.rb
245
- - test/unit/mws/test_feeds_client.rb
230
+ - test/unit/mws/test_reports_client.rb
231
+ - test/unit/mws/test_sellers_client.rb
232
+ - test/unit/mws/test_subscriptions_client.rb
233
+ - test/unit/peddler/errors/test_builder.rb
234
+ - test/unit/peddler/errors/test_error.rb
235
+ - test/unit/peddler/errors/test_handler.rb
236
+ - test/unit/peddler/errors/test_parser.rb
237
+ - test/unit/peddler/test_client.rb
238
+ - test/unit/peddler/test_flat_file_parser.rb
239
+ - test/unit/peddler/test_headers.rb
240
+ - test/unit/peddler/test_marketplace.rb
241
+ - test/unit/peddler/test_operation.rb
242
+ - test/unit/peddler/test_parser.rb
243
+ - test/unit/peddler/test_structured_list.rb
244
+ - test/unit/peddler/test_vcr_matcher.rb
245
+ - test/unit/peddler/test_xml_parser.rb
246
+ - test/unit/peddler/test_xml_response_parser.rb
246
247
  - test/unit/test_mws.rb
247
- - test/null_client.rb
248
- - test/mws.yml.example
249
- - test/helper.rb
250
- - test/integration/test_orders.rb
251
- - test/integration/test_recommendations.rb
252
- - test/integration/test_multibyte_queries.rb
253
- - test/integration/test_feeds.rb
254
- - test/integration/test_fulfillment_outbound_shipment.rb
255
- - test/integration/test_fulfillment_inbound_shipment.rb
256
- - test/integration/test_mws_headers.rb
257
- - test/integration/test_reports.rb
258
- - test/integration/test_subscriptions.rb
259
- - test/integration/test_merchant_fulfillment.rb
260
- - test/integration/test_errors.rb
261
- - test/integration/test_sellers.rb
262
- - test/integration/test_products.rb
263
- - test/integration/test_off_amazon_payments.rb
264
- - test/integration/test_fulfillment_inventory.rb
265
- - test/integration_helper.rb
266
- - test/vcr_cassettes/Products.yml
267
- - test/vcr_cassettes/MerchantFulfillment.yml
248
+ - test/vcr_cassettes/CartInformation.yml
268
249
  - test/vcr_cassettes/CustomerInformation.yml
269
- - test/vcr_cassettes/Recommendations.yml
250
+ - test/vcr_cassettes/Errors.yml
270
251
  - test/vcr_cassettes/Feeds.yml
271
- - test/vcr_cassettes/Orders.yml
272
- - test/vcr_cassettes/MultibyteQueries.yml
273
- - test/vcr_cassettes/CartInformation.yml
274
252
  - test/vcr_cassettes/FulfillmentInboundShipment.yml
253
+ - test/vcr_cassettes/FulfillmentInventory.yml
275
254
  - test/vcr_cassettes/FulfillmentOutboundShipment.yml
276
- - test/vcr_cassettes/PeddlerVCRMatcher.yml
255
+ - test/vcr_cassettes/MerchantFulfillment.yml
256
+ - test/vcr_cassettes/MultibyteQueries.yml
257
+ - test/vcr_cassettes/MWSHeaders.yml
277
258
  - test/vcr_cassettes/OffAmazonPayments.yml
259
+ - test/vcr_cassettes/Orders.yml
260
+ - test/vcr_cassettes/PeddlerVCRMatcher.yml
261
+ - test/vcr_cassettes/Products.yml
262
+ - test/vcr_cassettes/Recommendations.yml
263
+ - test/vcr_cassettes/Reports.yml
278
264
  - test/vcr_cassettes/Sellers.yml
279
- - test/vcr_cassettes/FulfillmentInventory.yml
280
- - test/vcr_cassettes/Errors.yml
281
265
  - test/vcr_cassettes/Subscriptions.yml
282
- - test/vcr_cassettes/MWSHeaders.yml
283
- - test/vcr_cassettes/Reports.yml
284
- - test/recorder.rb
285
- - test/credentials.rb