peddler 2.1.0 → 2.4.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of peddler might be problematic. Click here for more details.

Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +43 -41
  3. data/lib/mws.rb +2 -1
  4. data/lib/mws/easy_ship.rb +3 -0
  5. data/lib/mws/easy_ship/client.rb +93 -0
  6. data/lib/mws/fulfillment_inbound_shipment/client.rb +2 -2
  7. data/lib/mws/fulfillment_outbound_shipment/client.rb +1 -1
  8. data/lib/mws/orders/client.rb +7 -9
  9. data/lib/mws/reports/client.rb +9 -0
  10. data/lib/mws/shipment_invoicing.rb +3 -0
  11. data/lib/mws/shipment_invoicing/client.rb +74 -0
  12. data/lib/peddler/client.rb +18 -15
  13. data/lib/peddler/errors/builder.rb +7 -2
  14. data/lib/peddler/errors/class_generator.rb +7 -2
  15. data/lib/peddler/errors/error.rb +6 -2
  16. data/lib/peddler/errors/parser.rb +1 -1
  17. data/lib/peddler/flat_file_parser.rb +6 -4
  18. data/lib/peddler/headers.rb +53 -1
  19. data/lib/peddler/marketplace.rb +24 -22
  20. data/lib/peddler/operation.rb +17 -11
  21. data/lib/peddler/parser.rb +1 -1
  22. data/lib/peddler/structured_list.rb +1 -1
  23. data/lib/peddler/vcr_matcher.rb +7 -7
  24. data/lib/peddler/version.rb +1 -1
  25. data/lib/peddler/xml_parser.rb +1 -1
  26. data/lib/peddler/xml_response_parser.rb +3 -2
  27. metadata +15 -150
  28. data/lib/mws/off_amazon_payments/client.rb +0 -362
  29. data/lib/mws/reports/parser.rb +0 -35
  30. data/test/credentials.rb +0 -23
  31. data/test/helper.rb +0 -15
  32. data/test/integration/test_errors.rb +0 -25
  33. data/test/integration/test_feeds.rb +0 -37
  34. data/test/integration/test_fulfillment_inbound_shipment.rb +0 -35
  35. data/test/integration/test_fulfillment_inventory.rb +0 -20
  36. data/test/integration/test_fulfillment_outbound_shipment.rb +0 -13
  37. data/test/integration/test_merchant_fulfillment.rb +0 -69
  38. data/test/integration/test_multibyte_queries.rb +0 -17
  39. data/test/integration/test_mws_headers.rb +0 -16
  40. data/test/integration/test_off_amazon_payments.rb +0 -13
  41. data/test/integration/test_orders.rb +0 -30
  42. data/test/integration/test_products.rb +0 -97
  43. data/test/integration/test_recommendations.rb +0 -20
  44. data/test/integration/test_reports.rb +0 -51
  45. data/test/integration/test_sellers.rb +0 -13
  46. data/test/integration/test_subscriptions.rb +0 -27
  47. data/test/integration_helper.rb +0 -53
  48. data/test/mws.yml +0 -36
  49. data/test/mws.yml.example +0 -32
  50. data/test/null_client.rb +0 -25
  51. data/test/recorder.rb +0 -39
  52. data/test/unit/mws/test_feeds_client.rb +0 -103
  53. data/test/unit/mws/test_finances_client.rb +0 -74
  54. data/test/unit/mws/test_fulfillment_inbound_shipment_client.rb +0 -426
  55. data/test/unit/mws/test_fulfillment_inventory_client.rb +0 -48
  56. data/test/unit/mws/test_fulfillment_outbound_shipment_client.rb +0 -202
  57. data/test/unit/mws/test_merchant_fulfillment_client.rb +0 -109
  58. data/test/unit/mws/test_off_amazon_payments_client.rb +0 -286
  59. data/test/unit/mws/test_orders_client.rb +0 -111
  60. data/test/unit/mws/test_products_client.rb +0 -248
  61. data/test/unit/mws/test_recommendations_client.rb +0 -62
  62. data/test/unit/mws/test_reports_client.rb +0 -209
  63. data/test/unit/mws/test_sellers_client.rb +0 -47
  64. data/test/unit/mws/test_subscriptions_client.rb +0 -182
  65. data/test/unit/peddler/errors/test_builder.rb +0 -65
  66. data/test/unit/peddler/errors/test_class_generator.rb +0 -18
  67. data/test/unit/peddler/errors/test_error.rb +0 -33
  68. data/test/unit/peddler/errors/test_parser.rb +0 -44
  69. data/test/unit/peddler/test_client.rb +0 -203
  70. data/test/unit/peddler/test_flat_file_parser.rb +0 -102
  71. data/test/unit/peddler/test_headers.rb +0 -55
  72. data/test/unit/peddler/test_marketplace.rb +0 -47
  73. data/test/unit/peddler/test_operation.rb +0 -87
  74. data/test/unit/peddler/test_parser.rb +0 -36
  75. data/test/unit/peddler/test_structured_list.rb +0 -39
  76. data/test/unit/peddler/test_vcr_matcher.rb +0 -55
  77. data/test/unit/peddler/test_xml_parser.rb +0 -37
  78. data/test/unit/peddler/test_xml_response_parser.rb +0 -39
  79. data/test/unit/test_mws.rb +0 -11
  80. data/test/vcr_cassettes/CartInformation.yml +0 -433
  81. data/test/vcr_cassettes/CustomerInformation.yml +0 -433
  82. data/test/vcr_cassettes/Errors.yml +0 -885
  83. data/test/vcr_cassettes/Feeds.yml +0 -9957
  84. data/test/vcr_cassettes/FulfillmentInboundShipment.yml +0 -6166
  85. data/test/vcr_cassettes/FulfillmentInventory.yml +0 -850
  86. data/test/vcr_cassettes/FulfillmentOutboundShipment.yml +0 -433
  87. data/test/vcr_cassettes/MWSHeaders.yml +0 -2964
  88. data/test/vcr_cassettes/MerchantFulfillment.yml +0 -753
  89. data/test/vcr_cassettes/MultibyteQueries.yml +0 -437
  90. data/test/vcr_cassettes/OffAmazonPayments.yml +0 -433
  91. data/test/vcr_cassettes/Orders.yml +0 -4740
  92. data/test/vcr_cassettes/PeddlerVCRMatcher.yml +0 -41
  93. data/test/vcr_cassettes/Products.yml +0 -7139
  94. data/test/vcr_cassettes/Recommendations.yml +0 -3145
  95. data/test/vcr_cassettes/Reports.yml +0 -5549
  96. data/test/vcr_cassettes/Sellers.yml +0 -433
  97. data/test/vcr_cassettes/Subscriptions.yml +0 -1529
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'integration_helper'
4
- require 'mws/recommendations'
5
-
6
- class TestRecommendations < IntegrationTest
7
- def test_listing_recommendations
8
- clients.each do |client|
9
- res = client.list_recommendations(client.marketplace.id)
10
- refute_empty res.parse
11
- end
12
- end
13
-
14
- def test_getting_service_status
15
- clients.each do |client|
16
- res = client.get_service_status
17
- refute_empty res.parse
18
- end
19
- end
20
- end
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'integration_helper'
4
- require 'mws/reports'
5
-
6
- class TestReports < IntegrationTest
7
- def test_getting_report_request_count
8
- clients.each do |client|
9
- res = client.get_report_request_count
10
- refute_empty res.parse
11
- end
12
- end
13
-
14
- def test_getting_report_request_list
15
- clients.each do |client|
16
- res = client.get_report_request_list
17
- refute_empty res.parse
18
- end
19
- end
20
-
21
- def test_getting_report_schedule_count
22
- clients.each do |client|
23
- res = client.get_report_schedule_count
24
- refute_empty res.parse
25
- end
26
- end
27
-
28
- def test_listing_report_schedules
29
- clients.each do |client|
30
- res = client.get_report_schedule_list
31
- refute_empty res.parse
32
- end
33
- end
34
-
35
- def test_getting_report_count
36
- clients.each do |client|
37
- res = client.get_report_count
38
- refute_empty res.parse
39
- end
40
- end
41
-
42
- def test_getting_report
43
- clients.each do |client|
44
- res = client.get_report_list(max_count: 1)
45
- id = res.parse['ReportInfo']['ReportId']
46
- res = client.get_report(id)
47
- assert res.valid?
48
- assert res.records_count || res.parse
49
- end
50
- end
51
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'integration_helper'
4
- require 'mws/sellers'
5
-
6
- class TestSellers < IntegrationTest
7
- def test_getting_service_status
8
- clients.each do |client|
9
- res = client.get_service_status
10
- refute_empty res.parse
11
- end
12
- end
13
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'integration_helper'
4
- require 'mws/subscriptions'
5
-
6
- class TestSubscriptions < IntegrationTest
7
- def test_listing_registered_destinations
8
- clients.each do |client|
9
- res = client.list_registered_destinations(client.marketplace.id)
10
- refute_empty res.parse
11
- end
12
- end
13
-
14
- def test_listing_subscriptions
15
- clients.each do |client|
16
- res = client.list_subscriptions(client.marketplace.id)
17
- refute_empty res.parse
18
- end
19
- end
20
-
21
- def test_getting_service_status
22
- clients.each do |client|
23
- res = client.get_service_status
24
- refute_empty res.parse
25
- end
26
- end
27
- end
@@ -1,53 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'credentials'
4
- require 'helper'
5
- require 'recorder'
6
-
7
- class IntegrationTest < MiniTest::Test
8
- include Recorder
9
-
10
- class << self
11
- def use(endpoint)
12
- @current_endpoint = endpoint
13
- end
14
-
15
- def clients
16
- klass = MWS.const_get("#{current_endpoint}::Client")
17
- ::Credentials.to_a.shuffle.each_with_object([]) do |credentials, memo|
18
- client = klass.new(credentials)
19
- country_code = client.marketplace.country_code
20
- memo.define_singleton_method(country_code.downcase) { client }
21
- memo << client
22
- end
23
- end
24
-
25
- private
26
-
27
- def current_endpoint
28
- @current_endpoint ||= name.sub('Test', '')
29
- end
30
- end
31
-
32
- def clients
33
- self.class.clients
34
- end
35
- end
36
-
37
- ::Peddler::VCRMatcher.ignore_seller!
38
-
39
- VCR.configure do |c|
40
- c.before_record do |interaction|
41
- %w[
42
- BuyerName BuyerEmail Name AddressLine1 City StateOrProvinceCode PostalCode
43
- Phone Amount AmazonOrderId SellerOrderId
44
- ].each do |key|
45
- interaction.response.body.gsub!(/<#{key}>[^<]+</, "<#{key}>FILTERED<")
46
- end
47
- end
48
-
49
- Credentials.each do |record|
50
- c.filter_sensitive_data('MERCHANT_ID') { record['merchant_id'] }
51
- c.filter_sensitive_data('AWS_ACCESS_KEY_ID') { record['aws_access_key_id'] }
52
- end
53
- end
@@ -1,36 +0,0 @@
1
- - marketplace: CA
2
- merchant_id: A2A7WNXBU01UJW
3
- aws_access_key_id: AKIAILJW7BWJ6YBK4JUQ
4
- aws_secret_access_key: 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
5
- - marketplace: ES
6
- merchant_id: A2NEU7G6RGUKF
7
- aws_access_key_id: AKIAJAMAR367FRSYNOPA
8
- aws_secret_access_key: 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
9
- - marketplace: MX
10
- merchant_id: A1PCFAUFK3U94S
11
- aws_access_key_id: AKIAIHE4A3HDKICFHP4A
12
- aws_secret_access_key: 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
13
- - marketplace: JP
14
- merchant_id: A7BU5WGNVGQ1I
15
- aws_access_key_id: AKIAJZ6EOLNDLSOEOLBA
16
- aws_secret_access_key: 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
17
- - marketplace: IT
18
- merchant_id: A2APQUVDBVWV7E
19
- aws_access_key_id: AKIAIHE4YSF4UF7CDR6Q
20
- aws_secret_access_key: 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
21
- - marketplace: FR
22
- merchant_id: A2DP6GIDYN6OTH
23
- aws_access_key_id: AKIAIOYKJRT4WIH3P72A
24
- aws_secret_access_key: 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
25
- - marketplace: US
26
- merchant_id: A2H6NH4SQYFZ4M
27
- aws_access_key_id: AKIAJ25X7BKNXKVCYJXA
28
- aws_secret_access_key: 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
29
- - marketplace: GB
30
- merchant_id: A2D9DZ30GEWP6N
31
- aws_access_key_id: AKIAJCJNB4MASX5JUMUA
32
- aws_secret_access_key: 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
33
- - marketplace: DE
34
- merchant_id: A7ZXDJZD3UIRG
35
- aws_access_key_id: AKIAIORT7554FEBW7UBQ
36
- aws_secret_access_key: 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
@@ -1,32 +0,0 @@
1
- - marketplace: US
2
- aws_access_key_id: AWS_ACCESS_KEY_ID
3
- aws_secret_access_key: AWS_SECRET_ACCESS_KEY
4
- merchant_id: MERCHANT_ID
5
- - marketplace: GB
6
- aws_access_key_id: AWS_ACCESS_KEY_ID
7
- aws_secret_access_key: AWS_SECRET_ACCESS_KEY
8
- merchant_id: MERCHANT_ID
9
- - marketplace: DE
10
- aws_access_key_id: AWS_ACCESS_KEY_ID
11
- aws_secret_access_key: AWS_SECRET_ACCESS_KEY
12
- merchant_id: MERCHANT_ID
13
- - marketplace: CA
14
- aws_access_key_id: AWS_ACCESS_KEY_ID
15
- aws_secret_access_key: AWS_SECRET_ACCESS_KEY
16
- merchant_id: MERCHANT_ID
17
- - marketplace: FR
18
- aws_access_key_id: AWS_ACCESS_KEY_ID
19
- aws_secret_access_key: AWS_SECRET_ACCESS_KEY
20
- merchant_id: MERCHANT_ID
21
- - marketplace: JP
22
- aws_access_key_id: AWS_ACCESS_KEY_ID
23
- aws_secret_access_key: AWS_SECRET_ACCESS_KEY
24
- merchant_id: MERCHANT_ID
25
- - marketplace: ES
26
- aws_access_key_id: AWS_ACCESS_KEY_ID
27
- aws_secret_access_key: AWS_SECRET_ACCESS_KEY
28
- merchant_id: MERCHANT_ID
29
- - marketplace: IT
30
- aws_access_key_id: AWS_ACCESS_KEY_ID
31
- aws_secret_access_key: AWS_SECRET_ACCESS_KEY
32
- merchant_id: MERCHANT_ID
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'peddler/client'
4
- require 'securerandom'
5
-
6
- module Null
7
- module Parser
8
- def self.new(res, *)
9
- res
10
- end
11
- end
12
-
13
- class Client < ::Peddler::Client
14
- self.path = '/'
15
-
16
- def configure_with_mock_data!
17
- self.aws_access_key_id = SecureRandom.hex
18
- self.aws_secret_access_key = SecureRandom.hex
19
- self.merchant_id = SecureRandom.hex
20
- self.marketplace = 'US'
21
- end
22
-
23
- self.parser = Parser
24
- end
25
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'peddler/vcr_matcher'
4
- require 'yaml'
5
- require 'vcr'
6
-
7
- # So we can continue testing against old Content-MD5 header
8
- ::Peddler::VCRMatcher.ignored_params << 'ContentMD5Value'
9
-
10
- VCR.configure do |c|
11
- c.hook_into :excon
12
- c.cassette_library_dir = 'test/vcr_cassettes'
13
-
14
- c.default_cassette_options = {
15
- match_requests_on: [::Peddler::VCRMatcher],
16
- record: ENV['RECORD'] ? :new_episodes : :none
17
- }
18
-
19
- # c.before_record do |interaction|
20
- # code = interaction.response.status.code
21
- # interaction.ignore! if code >= 400 && code != 414
22
- # end
23
- end
24
-
25
- module Recorder
26
- def setup
27
- ENV['LIVE'] ? VCR.turn_off! : VCR.insert_cassette(test_name)
28
- end
29
-
30
- def teardown
31
- VCR.eject_cassette if VCR.turned_on?
32
- end
33
-
34
- private
35
-
36
- def test_name
37
- self.class.name.sub('Test', '')
38
- end
39
- end
@@ -1,103 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'helper'
4
- require 'mws/feeds/client'
5
-
6
- class TestMWSFeedsClient < MiniTest::Test
7
- def setup
8
- @client = MWS::Feeds::Client.new(marketplace: 'GB')
9
- end
10
-
11
- def test_submitting_feed
12
- operation = {
13
- 'Action' => 'SubmitFeed',
14
- 'FeedType' => 'type',
15
- 'MarketplaceIdList.Id.1' => '1'
16
- }
17
-
18
- @client.stub(:run, nil) do
19
- @client.submit_feed('content', 'type', marketplace_id_list: '1')
20
- end
21
-
22
- assert_equal operation, @client.operation
23
- end
24
-
25
- def test_getting_feed_submission_list
26
- operation = {
27
- 'Action' => 'GetFeedSubmissionList',
28
- 'FeedSubmissionIdList.Id.1' => '1',
29
- 'FeedTypeList.Type.1' => '2',
30
- 'FeedProcessingStatusList.Status.1' => '3'
31
- }
32
-
33
- @client.stub(:run, nil) do
34
- @client.get_feed_submission_list(
35
- feed_submission_id_list: '1',
36
- feed_type_list: '2',
37
- feed_processing_status_list: '3'
38
- )
39
- end
40
-
41
- assert_equal operation, @client.operation
42
- end
43
-
44
- def test_getting_feed_submission_list_by_next_token
45
- operation = {
46
- 'Action' => 'GetFeedSubmissionListByNextToken',
47
- 'NextToken' => '1'
48
- }
49
-
50
- @client.stub(:run, nil) do
51
- @client.get_feed_submission_list_by_next_token('1')
52
- end
53
-
54
- assert_equal operation, @client.operation
55
- end
56
-
57
- def test_getting_feed_submission_count
58
- operation = {
59
- 'Action' => 'GetFeedSubmissionCount',
60
- 'FeedTypeList.Type.1' => '1',
61
- 'FeedProcessingStatusList.Status.1' => '2'
62
- }
63
-
64
- @client.stub(:run, nil) do
65
- @client.get_feed_submission_count(
66
- feed_type_list: '1',
67
- feed_processing_status_list: '2'
68
- )
69
- end
70
-
71
- assert_equal operation, @client.operation
72
- end
73
-
74
- def test_canceling_feed_submissions
75
- operation = {
76
- 'Action' => 'CancelFeedSubmissions',
77
- 'FeedTypeList.Type.1' => '1',
78
- 'FeedSubmissionIdList.Id.1' => '2'
79
- }
80
-
81
- @client.stub(:run, nil) do
82
- @client.cancel_feed_submissions(
83
- feed_type_list: '1',
84
- feed_submission_id_list: '2'
85
- )
86
- end
87
-
88
- assert_equal operation, @client.operation
89
- end
90
-
91
- def test_getting_feed_submission_result
92
- operation = {
93
- 'Action' => 'GetFeedSubmissionResult',
94
- 'FeedSubmissionId' => '1'
95
- }
96
-
97
- @client.stub(:run, nil) do
98
- @client.get_feed_submission_result('1')
99
- end
100
-
101
- assert_equal operation, @client.operation
102
- end
103
- end
@@ -1,74 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'helper'
4
- require 'mws/finances/client'
5
-
6
- class TestMWSFinancesClient < MiniTest::Test
7
- def setup
8
- @client = MWS::Finances::Client.new
9
- end
10
-
11
- def test_listing_financial_event_groups
12
- operation = {
13
- 'Action' => 'ListFinancialEventGroups',
14
- 'FinancialEventGroupStartedAfter' => '2015-01-01'
15
- }
16
-
17
- @client.stub(:run, nil) do
18
- @client.list_financial_event_groups('2015-01-01')
19
- end
20
-
21
- assert_equal operation, @client.operation
22
- end
23
-
24
- def test_listing_financial_event_groups_by_next_token
25
- operation = {
26
- 'Action' => 'ListFinancialEventGroupsByNextToken',
27
- 'NextToken' => '1'
28
- }
29
-
30
- @client.stub(:run, nil) do
31
- @client.list_financial_event_groups_by_next_token('1')
32
- end
33
-
34
- assert_equal operation, @client.operation
35
- end
36
-
37
- def test_listing_financial_events
38
- operation = {
39
- 'Action' => 'ListFinancialEvents',
40
- 'AmazonOrderId' => '123'
41
- }
42
-
43
- @client.stub(:run, nil) do
44
- @client.list_financial_events(amazon_order_id: '123')
45
- end
46
-
47
- assert_equal operation, @client.operation
48
- end
49
-
50
- def test_listing_financial_events_by_next_token
51
- operation = {
52
- 'Action' => 'ListFinancialEventsByNextToken',
53
- 'NextToken' => '1'
54
- }
55
-
56
- @client.stub(:run, nil) do
57
- @client.list_financial_events_by_next_token('1')
58
- end
59
-
60
- assert_equal operation, @client.operation
61
- end
62
-
63
- def test_getting_service_status
64
- operation = {
65
- 'Action' => 'GetServiceStatus'
66
- }
67
-
68
- @client.stub(:run, nil) do
69
- @client.get_service_status
70
- end
71
-
72
- assert_equal operation, @client.operation
73
- end
74
- end