peddler 1.6.7 → 2.0.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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +69 -67
  3. data/lib/mws/feeds/client.rb +15 -12
  4. data/lib/mws/finances/client.rb +12 -11
  5. data/lib/mws/fulfillment_inbound_shipment/client.rb +79 -107
  6. data/lib/mws/fulfillment_inventory/client.rb +5 -5
  7. data/lib/mws/fulfillment_outbound_shipment/client.rb +36 -44
  8. data/lib/mws/merchant_fulfillment/client.rb +11 -17
  9. data/lib/mws/off_amazon_payments/client.rb +38 -68
  10. data/lib/mws/orders/client.rb +28 -24
  11. data/lib/mws/products/client.rb +118 -153
  12. data/lib/mws/recommendations/client.rb +13 -17
  13. data/lib/mws/reports/client.rb +24 -23
  14. data/lib/mws/sellers/client.rb +5 -5
  15. data/lib/mws/subscriptions/client.rb +25 -36
  16. data/lib/peddler/client.rb +47 -124
  17. data/lib/peddler/errors/builder.rb +40 -14
  18. data/lib/peddler/errors/class_generator.rb +34 -0
  19. data/lib/peddler/errors/error.rb +13 -3
  20. data/lib/peddler/headers.rb +27 -11
  21. data/lib/peddler/marketplace.rb +30 -11
  22. data/lib/peddler/vcr_matcher.rb +11 -1
  23. data/lib/peddler/version.rb +1 -1
  24. data/lib/peddler/xml_parser.rb +4 -2
  25. data/lib/peddler/xml_response_parser.rb +1 -1
  26. data/test/helper.rb +0 -1
  27. data/test/integration/test_errors.rb +2 -14
  28. data/test/integration/test_feeds.rb +0 -3
  29. data/test/integration/test_multibyte_queries.rb +1 -1
  30. data/test/integration/test_mws_headers.rb +3 -2
  31. data/test/integration/test_orders.rb +2 -1
  32. data/test/integration/test_products.rb +9 -9
  33. data/test/integration/test_recommendations.rb +1 -1
  34. data/test/integration/test_subscriptions.rb +2 -2
  35. data/test/integration_helper.rb +1 -1
  36. data/test/mws.yml +36 -0
  37. data/test/mws.yml.example +8 -12
  38. data/test/null_client.rb +10 -8
  39. data/test/unit/mws/test_feeds_client.rb +1 -2
  40. data/test/unit/mws/test_fulfillment_outbound_shipment_client.rb +1 -1
  41. data/test/unit/mws/test_off_amazon_payments_client.rb +1 -1
  42. data/test/unit/mws/test_orders_client.rb +7 -6
  43. data/test/unit/mws/test_products_client.rb +13 -28
  44. data/test/unit/mws/test_recommendations_client.rb +1 -2
  45. data/test/unit/mws/test_reports_client.rb +1 -1
  46. data/test/unit/mws/test_subscriptions_client.rb +1 -130
  47. data/test/unit/peddler/errors/test_builder.rb +54 -7
  48. data/test/unit/peddler/errors/test_class_generator.rb +18 -0
  49. data/test/unit/peddler/errors/test_error.rb +7 -2
  50. data/test/unit/peddler/test_client.rb +136 -190
  51. data/test/unit/peddler/test_flat_file_parser.rb +2 -2
  52. data/test/unit/peddler/test_headers.rb +19 -9
  53. data/test/unit/peddler/test_marketplace.rb +18 -5
  54. data/test/unit/peddler/test_vcr_matcher.rb +3 -1
  55. data/test/vcr_cassettes/Feeds.yml +4816 -5224
  56. data/test/vcr_cassettes/Reports.yml +3278 -2604
  57. metadata +8 -9
  58. data/lib/peddler/errors.rb +0 -12
  59. data/lib/peddler/errors/handler.rb +0 -59
  60. data/test/unit/peddler/errors/test_handler.rb +0 -62
  61. data/test/unit/peddler/test_errors.rb +0 -26
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: 1.6.7
4
+ version: 2.0.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: 2018-03-02 00:00:00.000000000 Z
11
+ date: 2018-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: excon
@@ -90,10 +90,9 @@ files:
90
90
  - lib/mws/subscriptions/client.rb
91
91
  - lib/peddler.rb
92
92
  - lib/peddler/client.rb
93
- - lib/peddler/errors.rb
94
93
  - lib/peddler/errors/builder.rb
94
+ - lib/peddler/errors/class_generator.rb
95
95
  - lib/peddler/errors/error.rb
96
- - lib/peddler/errors/handler.rb
97
96
  - lib/peddler/errors/parser.rb
98
97
  - lib/peddler/flat_file_parser.rb
99
98
  - lib/peddler/headers.rb
@@ -123,6 +122,7 @@ files:
123
122
  - test/integration/test_sellers.rb
124
123
  - test/integration/test_subscriptions.rb
125
124
  - test/integration_helper.rb
125
+ - test/mws.yml
126
126
  - test/mws.yml.example
127
127
  - test/null_client.rb
128
128
  - test/recorder.rb
@@ -140,11 +140,10 @@ files:
140
140
  - test/unit/mws/test_sellers_client.rb
141
141
  - test/unit/mws/test_subscriptions_client.rb
142
142
  - test/unit/peddler/errors/test_builder.rb
143
+ - test/unit/peddler/errors/test_class_generator.rb
143
144
  - test/unit/peddler/errors/test_error.rb
144
- - test/unit/peddler/errors/test_handler.rb
145
145
  - test/unit/peddler/errors/test_parser.rb
146
146
  - test/unit/peddler/test_client.rb
147
- - test/unit/peddler/test_errors.rb
148
147
  - test/unit/peddler/test_flat_file_parser.rb
149
148
  - test/unit/peddler/test_headers.rb
150
149
  - test/unit/peddler/test_marketplace.rb
@@ -185,7 +184,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
185
184
  requirements:
186
185
  - - ">="
187
186
  - !ruby/object:Gem::Version
188
- version: '2.2'
187
+ version: '2.3'
189
188
  required_rubygems_version: !ruby/object:Gem::Requirement
190
189
  requirements:
191
190
  - - ">="
@@ -207,10 +206,9 @@ test_files:
207
206
  - test/unit/peddler/test_xml_response_parser.rb
208
207
  - test/unit/peddler/test_xml_parser.rb
209
208
  - test/unit/peddler/test_flat_file_parser.rb
210
- - test/unit/peddler/test_errors.rb
211
209
  - test/unit/peddler/errors/test_error.rb
212
210
  - test/unit/peddler/errors/test_builder.rb
213
- - test/unit/peddler/errors/test_handler.rb
211
+ - test/unit/peddler/errors/test_class_generator.rb
214
212
  - test/unit/peddler/errors/test_parser.rb
215
213
  - test/unit/peddler/test_parser.rb
216
214
  - test/unit/mws/test_finances_client.rb
@@ -246,6 +244,7 @@ test_files:
246
244
  - test/integration/test_off_amazon_payments.rb
247
245
  - test/integration/test_fulfillment_inventory.rb
248
246
  - test/integration_helper.rb
247
+ - test/mws.yml
249
248
  - test/vcr_cassettes/Products.yml
250
249
  - test/vcr_cassettes/MerchantFulfillment.yml
251
250
  - test/vcr_cassettes/CustomerInformation.yml
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'peddler/errors/handler'
4
-
5
- module Peddler
6
- # @api private
7
- module Errors
8
- MWS.constants.each do |klass|
9
- MWS.const_get(klass).const_get(:Client).error_handler = Handler
10
- end
11
- end
12
- end
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'excon'
4
- require 'peddler/errors/builder'
5
-
6
- module Peddler
7
- module Errors
8
- # @api private
9
- class Handler
10
- DIGIT_AS_FIRST_CHAR = /^\d/
11
- private_constant :DIGIT_AS_FIRST_CHAR
12
-
13
- def self.call(exception)
14
- new(exception).handle
15
- end
16
-
17
- def self.parameters
18
- 1
19
- end
20
-
21
- attr_reader :exception
22
-
23
- def initialize(exception)
24
- @exception = exception
25
- end
26
-
27
- def handle
28
- raise exception unless http_status_error?
29
- raise exception if bad_name_for_error_class?
30
-
31
- raise error_class.new(error_message, exception)
32
- end
33
-
34
- private
35
-
36
- def error_class
37
- Errors.const_get(error_name)
38
- rescue NameError
39
- Builder.build(error_name)
40
- end
41
-
42
- def http_status_error?
43
- exception.is_a?(::Excon::Error::HTTPStatus)
44
- end
45
-
46
- def bad_name_for_error_class?
47
- error_name =~ DIGIT_AS_FIRST_CHAR
48
- end
49
-
50
- def error_name
51
- exception.response.code
52
- end
53
-
54
- def error_message
55
- exception.response.message
56
- end
57
- end
58
- end
59
- end
@@ -1,62 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'helper'
4
- require 'peddler/errors/handler'
5
-
6
- class TestPeddlerErrorsHandler < MiniTest::Test
7
- def setup
8
- @error = Peddler::Errors::Handler.call(@cause)
9
- rescue StandardError => @error
10
- end
11
-
12
- class CausedByHTTPStatusError < TestPeddlerErrorsHandler
13
- def setup
14
- @code = 'FeedProcessingResultNotReady'
15
- @message = 'Feed Submission Result is not ready for Feed 123'
16
- @cause = Excon::Error::NotFound.new(
17
- 'Expected(200) <=> Actual(404 Not Found)',
18
- nil,
19
- OpenStruct.new(code: @code, message: @message)
20
- )
21
- super
22
- end
23
-
24
- def test_generates_custom_error
25
- assert_includes @error.class.name, @code
26
- end
27
-
28
- def test_provides_message
29
- assert_equal @message, @error.message
30
- end
31
-
32
- def test_provides_cause
33
- assert_equal @cause, @error.cause
34
- end
35
- end
36
-
37
- class CausedByAnotherError < TestPeddlerErrorsHandler
38
- def setup
39
- @cause = StandardError.new
40
- super
41
- end
42
-
43
- def test_returns_original_error
44
- assert_equal @cause, @error
45
- end
46
- end
47
-
48
- class CausedByInternalServerError < TestPeddlerErrorsHandler
49
- def setup
50
- @cause = Excon::Error::InternalServerError.new(
51
- nil,
52
- nil,
53
- OpenStruct.new(code: '500', message: nil)
54
- )
55
- super
56
- end
57
-
58
- def test_returns_original_error
59
- assert_equal @cause, @error
60
- end
61
- end
62
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'helper'
4
- require 'peddler/errors'
5
-
6
- class TestPeddlerErrors < MiniTest::Test
7
- def teardown
8
- clients.each do |client|
9
- client.error_handler = proc { raise }
10
- end
11
- end
12
-
13
- def test_enables_new_error_handler
14
- clients.each do |client|
15
- assert_equal Peddler::Errors::Handler, client.error_handler
16
- end
17
- end
18
-
19
- private
20
-
21
- def clients
22
- MWS.constants.map do |klass|
23
- MWS.const_get(klass).const_get(:Client)
24
- end
25
- end
26
- end