peddler 1.6.5 → 1.6.6

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