peddler 1.6.7 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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