peddler 2.0.0 → 2.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -6
  3. data/lib/mws/feeds/client.rb +1 -0
  4. data/lib/mws/fulfillment_inbound_shipment/client.rb +3 -0
  5. data/lib/peddler/errors/builder.rb +0 -2
  6. data/lib/peddler/flat_file_parser.rb +3 -2
  7. data/lib/peddler/marketplace.rb +3 -4
  8. data/lib/peddler/operation.rb +7 -6
  9. data/lib/peddler/parser.rb +4 -5
  10. data/lib/peddler/version.rb +1 -1
  11. data/test/integration/test_orders.rb +2 -2
  12. data/test/integration/test_reports.rb +1 -1
  13. data/test/integration_helper.rb +2 -2
  14. data/test/unit/mws/test_fulfillment_inbound_shipment_client.rb +40 -3
  15. data/test/unit/peddler/test_flat_file_parser.rb +7 -0
  16. data/test/unit/peddler/test_operation.rb +7 -4
  17. data/test/vcr_cassettes/CartInformation.yml +9 -9
  18. data/test/vcr_cassettes/CustomerInformation.yml +9 -9
  19. data/test/vcr_cassettes/Errors.yml +18 -18
  20. data/test/vcr_cassettes/Feeds.yml +108 -108
  21. data/test/vcr_cassettes/FulfillmentInboundShipment.yml +27 -27
  22. data/test/vcr_cassettes/FulfillmentInventory.yml +18 -18
  23. data/test/vcr_cassettes/FulfillmentOutboundShipment.yml +9 -9
  24. data/test/vcr_cassettes/MWSHeaders.yml +9 -9
  25. data/test/vcr_cassettes/MerchantFulfillment.yml +9 -9
  26. data/test/vcr_cassettes/MultibyteQueries.yml +9 -9
  27. data/test/vcr_cassettes/OffAmazonPayments.yml +9 -9
  28. data/test/vcr_cassettes/Orders.yml +27 -27
  29. data/test/vcr_cassettes/Products.yml +81 -81
  30. data/test/vcr_cassettes/Recommendations.yml +18 -18
  31. data/test/vcr_cassettes/Reports.yml +189 -189
  32. data/test/vcr_cassettes/Sellers.yml +9 -9
  33. data/test/vcr_cassettes/Subscriptions.yml +27 -27
  34. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5bcc09df9ec8e72bf5ed2fc5f08bf6a4993bbbbcc9ddf20ae470d55f640a02fb
4
- data.tar.gz: 22934c9e74c6e03783d159ee436bfeeff8e90ee5f4053034228874f7a53c707c
3
+ metadata.gz: ab8bcb8e672611aae106acc48115ea0bc464386bfd132d9e63a9f79ec65a98e2
4
+ data.tar.gz: e9f7a329ded38e2ef63d3a339a925dbaf7696e2d58e7d59851f66fbb1aa7326e
5
5
  SHA512:
6
- metadata.gz: c2da04631b697f1715ecfc878d018685a3791eca496384cc6a96a602173b3244d5c3bb17c0d0b1fab6236eb7d1678f278aadb75acce5a6393822026c324c01c7
7
- data.tar.gz: 26977e23909f476a1b7f90c5a5b33baa4824391bd2bc6b5c5f212f75f64cd50f8091ab0634ff89bbdf31e76799072d5caf4e1bedcc605b72030f471a2c355678
6
+ metadata.gz: afdecb6f6a1b920e030588a184e28dee532676a3f42946f68eb87ba0798008ea642836d2e14b328d599e1d580cdae1919a2c5f6e1e5d5cacc19a9c2b322a1a9d
7
+ data.tar.gz: 846746905c8b96848a56dbfa69af5cfa8430e9d0d7d5df77796a760af087d48a30d332ca5e3391e38da45328c4fdda72568786814376fcf0d0b474c320ae8582
data/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  **Peddler** is a Ruby interface to the [Amazon MWS API](https://developer.amazonservices.com/), a collection of web services that help Amazon sellers programmatically exchange data on their listings, orders, payments, reports, and more.
8
8
 
9
- To use Amazon MWS, you must have an eligible seller account and [register as an application developer](https://docs.developer.amazonservices.com/en_US/dev_guide/DG_Registering.html#DG_Registering__RegisteringAsADeveloper).
9
+ To use Amazon MWS, you must have an eligible seller account and register as an [application developer](https://docs.developer.amazonservices.com/en_US/dev_guide/DG_Registering.html#DG_Registering__RegisteringAsADeveloper).
10
10
 
11
11
  Amazon has [multiple regions](https://docs.developer.amazonservices.com/en_US/dev_guide/DG_Endpoints.html). Each region requires application developers to register individually.
12
12
 
@@ -48,9 +48,9 @@ MWS.orders(marketplace: "US",
48
48
  If you are creating a [client for another seller](https://developer.amazonservices.com/gp/mws/faq.html#developForSeller), pass an MWS Auth Token as well.
49
49
 
50
50
  ```ruby
51
- client = MWS.orders(marketplace: "ATVPDKIKX0DER",
52
- merchant_id: "123",
53
- auth_token: "123")
51
+ MWS.orders(marketplace: "ATVPDKIKX0DER",
52
+ merchant_id: "123",
53
+ auth_token: "123")
54
54
  ```
55
55
 
56
56
  You won't be able to create a client for another seller if you are in different regions.
@@ -122,7 +122,7 @@ rescue Peddler::Errors::QuotaExceeded => error
122
122
  end
123
123
  ```
124
124
 
125
- [Read Amazon's tips on how to avoid throttling](https://docs.developer.amazonservices.com/en_US/dev_guide/DG_Throttling.html).
125
+ Read [tips on how to avoid throttling](https://docs.developer.amazonservices.com/en_US/dev_guide/DG_Throttling.html).
126
126
 
127
127
  ### Debugging
128
128
 
@@ -140,7 +140,7 @@ puts response.mws_request_id
140
140
  puts response.mws_timestamp
141
141
  ```
142
142
 
143
- You can access the same attributes on `error.response`. See example in <a href="#throttling">above</a>.
143
+ You can access the same attributes on `error.response`. See <a href="#throttling">above example</a>.
144
144
 
145
145
  ## The APIs
146
146
 
@@ -150,6 +150,7 @@ The MWS Feeds API lets you upload inventory and order data to Amazon. You can al
150
150
 
151
151
  - [Amazon references](https://developer.amazonservices.com/gp/mws/api.html?group=bde&section=feeds)
152
152
  - [Peddler API docs](http://www.rubydoc.info/gems/peddler/MWS/Feeds/Client)
153
+ - [XML schema docs](https://sellercentral.amazon.com/gp/help/help-page.html?itemID=1611)
153
154
 
154
155
  ### Finances
155
156
 
@@ -6,6 +6,7 @@ module MWS
6
6
  module Feeds
7
7
  # The MWS Feeds API lets you upload inventory and order data to Amazon. You
8
8
  # can also use this API to get information about the processing of feeds.
9
+ # @see https://sellercentral.amazon.com/gp/help/help-page.html?itemID=1611
9
10
  class Client < ::Peddler::Client
10
11
  self.version = '2009-01-01'
11
12
  self.path = "/Feeds/#{version}"
@@ -47,6 +47,8 @@ module MWS
47
47
  # @param [Struct, Hash] ship_from_address
48
48
  # @param [Array<Struct, Hash>] inbound_shipment_plan_request_items
49
49
  # @param [Hash] opts
50
+ # @option opts [String] :ship_to_country_code
51
+ # @option opts [String] :ship_to_country_subdivision_code
50
52
  # @option opts [String] :label_prep_preference
51
53
  # @return [Peddler::XMLParser]
52
54
  def create_inbound_shipment_plan(ship_from_address,
@@ -58,6 +60,7 @@ module MWS
58
60
  'InboundShipmentPlanRequestItems' =>
59
61
  inbound_shipment_plan_request_items)
60
62
  .structure!('InboundShipmentPlanRequestItems', 'member')
63
+ .structure!('PrepDetailsList', 'member')
61
64
 
62
65
  run
63
66
  end
@@ -39,8 +39,6 @@ module Peddler
39
39
  end
40
40
 
41
41
  def error_class
42
- Errors.const_get(error_name)
43
- rescue NameError
44
42
  ClassGenerator.call(error_name)
45
43
  end
46
44
 
@@ -12,6 +12,7 @@ module Peddler
12
12
 
13
13
  # http://stackoverflow.com/questions/8073920/importing-csv-quoting-error-is-driving-me-nuts
14
14
  OPTIONS = { col_sep: "\t", quote_char: "\x00", headers: true }.freeze
15
+ private_constant :OPTIONS
15
16
 
16
17
  attr_reader :content, :summary
17
18
 
@@ -22,7 +23,7 @@ module Peddler
22
23
  end
23
24
 
24
25
  def parse(&blk)
25
- CSV.parse(content, OPTIONS, &blk) if content
26
+ CSV.parse(content, OPTIONS, &blk) unless content.empty?
26
27
  end
27
28
 
28
29
  def records_count
@@ -42,7 +43,7 @@ module Peddler
42
43
 
43
44
  def extract_content_and_summary
44
45
  @content = body.encode('UTF-8', invalid: :replace, undef: :replace)
45
- @summary, @content = @content.split("\n\n") if @content.include?("\n\n")
46
+ @summary, @content = @content.split("\n\n", 2) if @content =~ /\t\t.*\n\n/
46
47
  end
47
48
 
48
49
  def summarize
@@ -39,10 +39,9 @@ module Peddler
39
39
  end
40
40
  end
41
41
 
42
- # Caveat: We use the supersets Windows-31J and CP1252 in place of Shift_JIS
43
- # and ISO 8859-1 respectively to handle edge cases where latter will not
44
- # support some characters. The supersets should be safe to use as drop-in
45
- # replacements.
42
+ # Caveat: We use supersets Windows-31J and CP1252 in place of Shift_JIS and
43
+ # ISO 8859-1 respectively to handle some edge cases. These should be safe to
44
+ # drop in as replacements.
46
45
  def encoding
47
46
  case country_code
48
47
  when 'JP'
@@ -15,12 +15,13 @@ module Peddler
15
15
 
16
16
  def structure!(*list_keys)
17
17
  list_key = list_keys.shift
18
- found_key = keys.find { |key| key.end_with?(list_key) }
19
- if found_key
20
- builder = StructuredList.new(found_key, *list_keys)
21
- vals = delete(found_key)
22
- update(builder.build(vals))
23
- end
18
+ keys
19
+ .find_all { |key| key.end_with?(list_key) }
20
+ .each do |found_key|
21
+ builder = StructuredList.new(found_key, *list_keys)
22
+ vals = delete(found_key)
23
+ update(builder.build(vals))
24
+ end
24
25
 
25
26
  self
26
27
  end
@@ -7,8 +7,8 @@ module Peddler
7
7
  # @api private
8
8
  module Parser
9
9
  class << self
10
- # The inevitable-seeming messiness of massaging data produced by a motley
11
- # army of Amazon developers
10
+ # We're massaging data produced by a motley army of developers. It's
11
+ # messy.
12
12
  def new(res, encoding)
13
13
  # Don't parse if there's no body
14
14
  return res unless res.body
@@ -16,9 +16,8 @@ module Peddler
16
16
  if xml?(res)
17
17
  XMLResponseParser.new(res)
18
18
  else
19
- # Amazon returns a variety of content types for flat files, so we
20
- # simply assume that anything not XML is a flat file rather than code
21
- # defensively and check content type again.
19
+ # Amazon returns a variety of content types for flat files. I simply
20
+ # assume anything not XML is a flat file.
22
21
  FlatFileParser.new(res, encoding)
23
22
  end
24
23
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Peddler
4
- VERSION = '2.0.0'
4
+ VERSION = '2.0.3'
5
5
  end
@@ -14,8 +14,8 @@ class TestOrders < IntegrationTest
14
14
 
15
15
  next if order_ids.count < 2
16
16
 
17
- orders = client.get_order(*order_ids)
18
- .dig('Orders', 'Order')
17
+ res = client.get_order(*order_ids)
18
+ orders = res.dig('Orders', 'Order')
19
19
 
20
20
  assert_equal order_ids.count, orders.count
21
21
  end
@@ -45,7 +45,7 @@ class TestReports < IntegrationTest
45
45
  id = res.parse['ReportInfo']['ReportId']
46
46
  res = client.get_report(id)
47
47
  assert res.valid?
48
- refute_empty res.parse || res.records_count
48
+ assert res.records_count || res.parse
49
49
  end
50
50
  end
51
51
  end
@@ -45,7 +45,7 @@ VCR.configure do |c|
45
45
  end
46
46
 
47
47
  Credentials.each do |record|
48
- c.filter_sensitive_data('FILTERED') { record['merchant_id'] }
49
- c.filter_sensitive_data('FILTERED') { record['aws_access_key_id'] }
48
+ c.filter_sensitive_data('MERCHANT_ID') { record['merchant_id'] }
49
+ c.filter_sensitive_data('AWS_ACCESS_KEY_ID') { record['aws_access_key_id'] }
50
50
  end
51
51
  end
@@ -39,12 +39,49 @@ class TestMWSFulfillmentInboundShipmentClient < MiniTest::Test
39
39
  def test_creates_inbound_shipment_plan
40
40
  operation = {
41
41
  'Action' => 'CreateInboundShipmentPlan',
42
- 'ShipFromAddress.Foo' => '1',
43
- 'InboundShipmentPlanRequestItems.member.1.Bar' => '2'
42
+ 'LabelPrepPreference' => 'SELLER_LABEL',
43
+ 'ShipFromAddress.Name' => 'test1',
44
+ 'ShipFromAddress.City' => 'Seattle',
45
+ 'ShipFromAddress.CountryCode' => 'US',
46
+ 'InboundShipmentPlanRequestItems.member.1.SellerSKU' => 'SKU00001',
47
+ 'InboundShipmentPlanRequestItems.member.1.Quantity' => '1',
48
+ 'InboundShipmentPlanRequestItems.member.1.PrepDetailsList.member.1.PrepInstruction' => 'Taping',
49
+ 'InboundShipmentPlanRequestItems.member.1.PrepDetailsList.member.1.PrepOwner' => 'AMAZON',
50
+ 'InboundShipmentPlanRequestItems.member.1.PrepDetailsList.member.2.PrepInstruction' => 'BubbleWrapping',
51
+ 'InboundShipmentPlanRequestItems.member.1.PrepDetailsList.member.2.PrepOwner' => 'AMAZON',
52
+ 'InboundShipmentPlanRequestItems.member.2.SellerSKU' => 'SKU00002',
53
+ 'InboundShipmentPlanRequestItems.member.2.Quantity' => '1',
54
+ 'InboundShipmentPlanRequestItems.member.2.PrepDetailsList.member.1.PrepInstruction' => 'Taping',
55
+ 'InboundShipmentPlanRequestItems.member.2.PrepDetailsList.member.1.PrepOwner' => 'AMAZON',
56
+ 'InboundShipmentPlanRequestItems.member.2.PrepDetailsList.member.2.PrepInstruction' => 'BubbleWrapping',
57
+ 'InboundShipmentPlanRequestItems.member.2.PrepDetailsList.member.2.PrepOwner' => 'AMAZON'
44
58
  }
45
59
 
46
60
  @client.stub(:run, nil) do
47
- @client.create_inbound_shipment_plan({ 'Foo' => '1' }, [{ 'Bar' => '2' }])
61
+ address = {
62
+ 'Name' => 'test1',
63
+ 'City' => 'Seattle',
64
+ 'CountryCode' => 'US'
65
+ }
66
+ request_items = [
67
+ {
68
+ 'SellerSKU' => 'SKU00001',
69
+ 'Quantity' => '1',
70
+ 'PrepDetailsList' => [
71
+ { 'PrepInstruction' => 'Taping', 'PrepOwner' => 'AMAZON' },
72
+ { 'PrepInstruction' => 'BubbleWrapping', 'PrepOwner' => 'AMAZON' }
73
+ ]
74
+ }, {
75
+ 'SellerSKU' => 'SKU00002',
76
+ 'Quantity' => '1',
77
+ 'PrepDetailsList' => [
78
+ { 'PrepInstruction' => 'Taping', 'PrepOwner' => 'AMAZON' },
79
+ { 'PrepInstruction' => 'BubbleWrapping', 'PrepOwner' => 'AMAZON' }
80
+ ]
81
+ }
82
+ ]
83
+ @client.create_inbound_shipment_plan(address, request_items,
84
+ label_prep_preference: 'SELLER_LABEL')
48
85
  end
49
86
 
50
87
  assert_equal operation, @client.operation
@@ -20,6 +20,13 @@ class TestPeddlerFlatFileParser < MiniTest::Test
20
20
  assert counter.positive?
21
21
  end
22
22
 
23
+ def test_works_around_empty_rows
24
+ body = build_body("Feed Processing Summary:\n\tNumber of records processed\t\t2\n\tNumber of records successful\t\t2\n\nfoo\tbar\n1\ta\n\n2\tb\n",
25
+ encoding: Encoding::ASCII_8BIT)
26
+ parser = Peddler::FlatFileParser.new(build_mock_response(body), 'ISO-8859-1')
27
+ assert_equal 3, parser.parse.count
28
+ end
29
+
23
30
  def test_summarises
24
31
  body = build_body("Feed Processing Summary:\n\tNumber of records processed\t\t11006\n\tNumber of records successful\t\t11006\n\noriginal-record-number\tsku\terror-code\terror-type\terror-message\n1822\t85da472e-ba6c-11e3-95af-002590a74356\t5000\tWarning\tThe update for Sku '85da472e-ba6c-11e3-95af-002590a74356' was skipped because it is identical to the update in feed '9518995390'.\n",
25
32
  encoding: Encoding::ASCII_8BIT)
@@ -16,11 +16,14 @@ class TestPeddlerOperation < MiniTest::Test
16
16
  assert_equal 2, @operation['FooStatus.Foo.2']
17
17
  end
18
18
 
19
- def test_converts_nested_key_to_structured_list
20
- @operation.store('Foo.Status', [{ 'Baz' => 1 }])
19
+ def test_converts_nested_keys_to_structured_list
20
+ @operation.store('Foo.1.Status', [{ 'Baz' => 1 }])
21
+ @operation.store('Foo.2.Status', [{ 'Baz' => 2 }])
21
22
  @operation.structure!('Status', 'Bar')
22
- refute @operation.key?('FooStatus')
23
- assert_equal 1, @operation['Foo.Status.Bar.1.Baz']
23
+ refute @operation.key?('Foo.1.Status')
24
+ refute @operation.key?('Foo.2.Status')
25
+ assert_equal 1, @operation['Foo.1.Status.Bar.1.Baz']
26
+ assert_equal 2, @operation['Foo.2.Status.Bar.1.Baz']
24
27
  end
25
28
 
26
29
  def test_store_camelizes_symbol_key
@@ -5,7 +5,7 @@ http_interactions:
5
5
  uri: https://mws.amazonservices.com/CartInformation/2014-03-01
6
6
  body:
7
7
  encoding: US-ASCII
8
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2015-03-28T18%3A10%3A17Z&Version=2014-03-01&Signature=Ld91dAS8OXCk9NNcjb9d4AyEerTSfVMGDAdp7EHmCWU%3D
8
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2015-03-28T18%3A10%3A17Z&Version=2014-03-01&Signature=Ld91dAS8OXCk9NNcjb9d4AyEerTSfVMGDAdp7EHmCWU%3D
9
9
  headers:
10
10
  User-Agent:
11
11
  - Jeff/1.2.0 (Language=Ruby; Hakans-MacBook-Pro.local)
@@ -50,7 +50,7 @@ http_interactions:
50
50
  uri: https://mws-eu.amazonservices.com/CartInformation/2014-03-01
51
51
  body:
52
52
  encoding: US-ASCII
53
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2015-03-28T18%3A10%3A18Z&Version=2014-03-01&Signature=d4vyZzrPNWdYbhXs5L01DT%2FoERrRfTDWHwyAlSpZb0I%3D
53
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2015-03-28T18%3A10%3A18Z&Version=2014-03-01&Signature=d4vyZzrPNWdYbhXs5L01DT%2FoERrRfTDWHwyAlSpZb0I%3D
54
54
  headers:
55
55
  User-Agent:
56
56
  - Jeff/1.2.0 (Language=Ruby; Hakans-MacBook-Pro.local)
@@ -95,7 +95,7 @@ http_interactions:
95
95
  uri: https://mws.amazonservices.jp/CartInformation/2014-03-01
96
96
  body:
97
97
  encoding: US-ASCII
98
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2015-03-28T18%3A10%3A18Z&Version=2014-03-01&Signature=SAtKF%2FgZvRKDqsTqHPIsaSkE4xSeqa9jroOreysDc1I%3D
98
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2015-03-28T18%3A10%3A18Z&Version=2014-03-01&Signature=SAtKF%2FgZvRKDqsTqHPIsaSkE4xSeqa9jroOreysDc1I%3D
99
99
  headers:
100
100
  User-Agent:
101
101
  - Jeff/1.2.0 (Language=Ruby; Hakans-MacBook-Pro.local)
@@ -140,7 +140,7 @@ http_interactions:
140
140
  uri: https://mws.amazonservices.com/CartInformation/2014-03-01
141
141
  body:
142
142
  encoding: US-ASCII
143
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2015-03-28T18%3A10%3A20Z&Version=2014-03-01&Signature=W7G0kqHOMU91l%2B731hPIwjZbuNfk%2FuUZh4yEKkcuZKE%3D
143
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2015-03-28T18%3A10%3A20Z&Version=2014-03-01&Signature=W7G0kqHOMU91l%2B731hPIwjZbuNfk%2FuUZh4yEKkcuZKE%3D
144
144
  headers:
145
145
  User-Agent:
146
146
  - Jeff/1.2.0 (Language=Ruby; Hakans-MacBook-Pro.local)
@@ -185,7 +185,7 @@ http_interactions:
185
185
  uri: https://mws.amazonservices.com/CartInformation/2014-03-01
186
186
  body:
187
187
  encoding: UTF-8
188
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A36%3A40Z&Version=2014-03-01&Signature=Tk7nFqDn9DB4%2B9%2FiJRdY6NZXW2PFdxWSmMcNOFpUWTg%3D
188
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A36%3A40Z&Version=2014-03-01&Signature=Tk7nFqDn9DB4%2B9%2FiJRdY6NZXW2PFdxWSmMcNOFpUWTg%3D
189
189
  headers:
190
190
  User-Agent:
191
191
  - Jeff/1.5.1 (Language=Ruby; Hakans-MacBook.home)
@@ -235,7 +235,7 @@ http_interactions:
235
235
  uri: https://mws-eu.amazonservices.com/CartInformation/2014-03-01
236
236
  body:
237
237
  encoding: UTF-8
238
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A36%3A42Z&Version=2014-03-01&Signature=zN1E2KOQnB1%2BhCW13NFgfM8%2BzJ124zPIm20B%2BVjDdqY%3D
238
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A36%3A42Z&Version=2014-03-01&Signature=zN1E2KOQnB1%2BhCW13NFgfM8%2BzJ124zPIm20B%2BVjDdqY%3D
239
239
  headers:
240
240
  User-Agent:
241
241
  - Jeff/1.5.1 (Language=Ruby; Hakans-MacBook.home)
@@ -285,7 +285,7 @@ http_interactions:
285
285
  uri: https://mws-eu.amazonservices.com/CartInformation/2014-03-01
286
286
  body:
287
287
  encoding: UTF-8
288
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A36%3A42Z&Version=2014-03-01&Signature=n%2FyWxKdk1zAyN4WMU%2BzjWlf9I1B69JYVDJh2JpL5uTo%3D
288
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A36%3A42Z&Version=2014-03-01&Signature=n%2FyWxKdk1zAyN4WMU%2BzjWlf9I1B69JYVDJh2JpL5uTo%3D
289
289
  headers:
290
290
  User-Agent:
291
291
  - Jeff/1.5.1 (Language=Ruby; Hakans-MacBook.home)
@@ -335,7 +335,7 @@ http_interactions:
335
335
  uri: https://mws-eu.amazonservices.com/CartInformation/2014-03-01
336
336
  body:
337
337
  encoding: UTF-8
338
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A36%3A42Z&Version=2014-03-01&Signature=AY%2BsyBHSpK5JJWP5oXnho3Rf7jYJ30pGmvlGaAUnfzs%3D
338
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A36%3A42Z&Version=2014-03-01&Signature=AY%2BsyBHSpK5JJWP5oXnho3Rf7jYJ30pGmvlGaAUnfzs%3D
339
339
  headers:
340
340
  User-Agent:
341
341
  - Jeff/1.5.1 (Language=Ruby; Hakans-MacBook.home)
@@ -385,7 +385,7 @@ http_interactions:
385
385
  uri: https://mws-eu.amazonservices.com/CartInformation/2014-03-01
386
386
  body:
387
387
  encoding: UTF-8
388
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A36%3A43Z&Version=2014-03-01&Signature=7rJDI43OadISwA6AfpHAR6jCvV3ncXcRmU%2B%2BDHziIlY%3D
388
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A36%3A43Z&Version=2014-03-01&Signature=7rJDI43OadISwA6AfpHAR6jCvV3ncXcRmU%2B%2BDHziIlY%3D
389
389
  headers:
390
390
  User-Agent:
391
391
  - Jeff/1.5.1 (Language=Ruby; Hakans-MacBook.home)
@@ -5,7 +5,7 @@ http_interactions:
5
5
  uri: https://mws.amazonservices.com/CustomerInformation/2014-03-01
6
6
  body:
7
7
  encoding: US-ASCII
8
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2015-03-28T18%3A10%3A34Z&Version=2014-03-01&Signature=1%2FL5NDm5Ouf2bLwtGovQmn54OtIeeZHLfzzBQJfZ6P0%3D
8
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2015-03-28T18%3A10%3A34Z&Version=2014-03-01&Signature=1%2FL5NDm5Ouf2bLwtGovQmn54OtIeeZHLfzzBQJfZ6P0%3D
9
9
  headers:
10
10
  User-Agent:
11
11
  - Jeff/1.2.0 (Language=Ruby; Hakans-MacBook-Pro.local)
@@ -50,7 +50,7 @@ http_interactions:
50
50
  uri: https://mws-eu.amazonservices.com/CustomerInformation/2014-03-01
51
51
  body:
52
52
  encoding: US-ASCII
53
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2015-03-28T18%3A10%3A35Z&Version=2014-03-01&Signature=0Z0UxCRnrGZoS%2F%2Bjtn%2F3g0dYYiC4fkyDKQayAkIPtzE%3D
53
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2015-03-28T18%3A10%3A35Z&Version=2014-03-01&Signature=0Z0UxCRnrGZoS%2F%2Bjtn%2F3g0dYYiC4fkyDKQayAkIPtzE%3D
54
54
  headers:
55
55
  User-Agent:
56
56
  - Jeff/1.2.0 (Language=Ruby; Hakans-MacBook-Pro.local)
@@ -95,7 +95,7 @@ http_interactions:
95
95
  uri: https://mws.amazonservices.jp/CustomerInformation/2014-03-01
96
96
  body:
97
97
  encoding: US-ASCII
98
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2015-03-28T18%3A10%3A36Z&Version=2014-03-01&Signature=nwmUlmdXDSzXRlMIkg3H%2FRVk8WFGs%2FkJYb%2FqMSjQi8U%3D
98
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2015-03-28T18%3A10%3A36Z&Version=2014-03-01&Signature=nwmUlmdXDSzXRlMIkg3H%2FRVk8WFGs%2FkJYb%2FqMSjQi8U%3D
99
99
  headers:
100
100
  User-Agent:
101
101
  - Jeff/1.2.0 (Language=Ruby; Hakans-MacBook-Pro.local)
@@ -140,7 +140,7 @@ http_interactions:
140
140
  uri: https://mws.amazonservices.com/CustomerInformation/2014-03-01
141
141
  body:
142
142
  encoding: US-ASCII
143
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2015-03-28T18%3A10%3A37Z&Version=2014-03-01&Signature=1gtD52L%2FPTkcgT%2FIOt40amQ1%2ByJXM9bXkqJz8ubiHf4%3D
143
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2015-03-28T18%3A10%3A37Z&Version=2014-03-01&Signature=1gtD52L%2FPTkcgT%2FIOt40amQ1%2ByJXM9bXkqJz8ubiHf4%3D
144
144
  headers:
145
145
  User-Agent:
146
146
  - Jeff/1.2.0 (Language=Ruby; Hakans-MacBook-Pro.local)
@@ -185,7 +185,7 @@ http_interactions:
185
185
  uri: https://mws.amazonservices.com/CustomerInformation/2014-03-01
186
186
  body:
187
187
  encoding: UTF-8
188
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A37%3A18Z&Version=2014-03-01&Signature=ulFnKcmr%2Bo3DWGZMbbUllITdAOwwNlHTbQrIcq%2FXWQE%3D
188
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A37%3A18Z&Version=2014-03-01&Signature=ulFnKcmr%2Bo3DWGZMbbUllITdAOwwNlHTbQrIcq%2FXWQE%3D
189
189
  headers:
190
190
  User-Agent:
191
191
  - Jeff/1.5.1 (Language=Ruby; Hakans-MacBook.home)
@@ -235,7 +235,7 @@ http_interactions:
235
235
  uri: https://mws-eu.amazonservices.com/CustomerInformation/2014-03-01
236
236
  body:
237
237
  encoding: UTF-8
238
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A37%3A20Z&Version=2014-03-01&Signature=YO2xqZYI%2F5jCYgOq00tHWYklOU8akuk0FHY%2F0X%2F9hrI%3D
238
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A37%3A20Z&Version=2014-03-01&Signature=YO2xqZYI%2F5jCYgOq00tHWYklOU8akuk0FHY%2F0X%2F9hrI%3D
239
239
  headers:
240
240
  User-Agent:
241
241
  - Jeff/1.5.1 (Language=Ruby; Hakans-MacBook.home)
@@ -285,7 +285,7 @@ http_interactions:
285
285
  uri: https://mws-eu.amazonservices.com/CustomerInformation/2014-03-01
286
286
  body:
287
287
  encoding: UTF-8
288
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A37%3A21Z&Version=2014-03-01&Signature=NhjhZ7182OzwKG0dPMRbJ5KnB4G2dRdOFCvBFISyLWE%3D
288
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A37%3A21Z&Version=2014-03-01&Signature=NhjhZ7182OzwKG0dPMRbJ5KnB4G2dRdOFCvBFISyLWE%3D
289
289
  headers:
290
290
  User-Agent:
291
291
  - Jeff/1.5.1 (Language=Ruby; Hakans-MacBook.home)
@@ -335,7 +335,7 @@ http_interactions:
335
335
  uri: https://mws-eu.amazonservices.com/CustomerInformation/2014-03-01
336
336
  body:
337
337
  encoding: UTF-8
338
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A37%3A21Z&Version=2014-03-01&Signature=mIV1JMvgycHCj7xRR9wrhkIJLOd30ydlu%2Blh6l43rH0%3D
338
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A37%3A21Z&Version=2014-03-01&Signature=mIV1JMvgycHCj7xRR9wrhkIJLOd30ydlu%2Blh6l43rH0%3D
339
339
  headers:
340
340
  User-Agent:
341
341
  - Jeff/1.5.1 (Language=Ruby; Hakans-MacBook.home)
@@ -385,7 +385,7 @@ http_interactions:
385
385
  uri: https://mws-eu.amazonservices.com/CustomerInformation/2014-03-01
386
386
  body:
387
387
  encoding: UTF-8
388
- string: AWSAccessKeyId=FILTERED&Action=GetServiceStatus&SellerId=FILTERED&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A37%3A22Z&Version=2014-03-01&Signature=3FoVyLOV9DSHEVssJRfniw6TtAovo7Vx4TqrhlQCT5c%3D
388
+ string: AWSAccessKeyId=AWS_ACCESS_KEY_ID&Action=GetServiceStatus&SellerId=MERCHANT_ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-05-23T12%3A37%3A22Z&Version=2014-03-01&Signature=3FoVyLOV9DSHEVssJRfniw6TtAovo7Vx4TqrhlQCT5c%3D
389
389
  headers:
390
390
  User-Agent:
391
391
  - Jeff/1.5.1 (Language=Ruby; Hakans-MacBook.home)