peddler 1.6.1 → 1.6.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4d83b099126be1823bbd9bd9c45ea1d7ec3455f9
4
- data.tar.gz: 74b18adc957648244ac9b7bf04d60fe3006c4fc2
3
+ metadata.gz: 47c52a1b5f75f285052401e6397073ed84c09c9a
4
+ data.tar.gz: 602df49beef094aacc196ae6f5914404a7a94228
5
5
  SHA512:
6
- metadata.gz: 7f977ea894c96c6454bfd442bd8f5e866aaf56029c23649d7d133fbca85b4544a894d99e254847a77afaa36460dfb1caf39f0eefb272982739b0c375cf340ba0
7
- data.tar.gz: 3b7f7bdf62a91254838b412ba634eca896f8a4cb14683ecb92b7e1621c6a7b72d92874e1a1f564abb0529e390ae85c7cf9cf9fb2d399d9ef695d0f888c6358ac
6
+ metadata.gz: 53436bf6a4454256ae5673ace40e55dd753d6eaef38e73640f55e5bdf832d6fa267eb30bf8b9205f09d6a94085c849a6935f4eab219fa10aa2ca6244d42b8b4b
7
+ data.tar.gz: ac510facfb0eebde81447bfa2fcde617a144fc0b50d034bf05d22a8e1e845b098c3f438a9617f4cd104a42aeb017c8ec3dcb0745f08964658b0eb73ac72c29c1
@@ -165,6 +165,42 @@ module MWS
165
165
  run
166
166
  end
167
167
 
168
+ # Returns a list of return reason codes for a seller SKU in a given marketplace.
169
+ #
170
+ # @see http://docs.developer.amazonservices.com/en_US/fba_outbound/FBAOutbound_ListReturnReasonCodes.html
171
+ # @param [String] seller_sku
172
+ # @param [Hash] opts
173
+ # @option opts [String] :marketplace_id
174
+ # @option opts [String] :seller_fulfillment_order_id
175
+ # @option opts [String] :language
176
+ # @return [Peddler::XMLParser]
177
+ def list_return_reason_codes(seller_sku, opts = {})
178
+ operation('ListReturnReasonCodes')
179
+ .add(
180
+ opts.merge(
181
+ 'SellerSKU' => seller_sku
182
+ )
183
+ )
184
+ .structure!('List', 'member')
185
+
186
+ run
187
+ end
188
+
189
+ # Creates a fulfillment return.
190
+ #
191
+ # @see http://docs.developer.amazonservices.com/en_US/fba_outbound/FBAOutbound_CreateFulfillmentReturn.html
192
+ # @param [String] seller_fulfillment_order_id
193
+ # @param [Array] items
194
+ # @return [Peddler::XMLParser]
195
+ def create_fulfillment_return(seller_fulfillment_order_id, items)
196
+ operation('CreateFulfillmentReturn')
197
+ .add('SellerFulfillmentOrderId' => seller_fulfillment_order_id)
198
+ .add('Items' => items)
199
+ .structure!('Items', 'member')
200
+
201
+ run
202
+ end
203
+
168
204
  # Gets the operational status of the API
169
205
  #
170
206
  # @see http://docs.developer.amazonservices.com/en_US/fba_outbound/MWS_GetServiceStatus.html
@@ -34,7 +34,7 @@ module Peddler
34
34
  private
35
35
 
36
36
  def scrub_body!(encoding)
37
- body.force_encoding(encoding) unless body.encoding == 'UTF-8'
37
+ body.force_encoding(encoding) unless body.encoding == Encoding::UTF_8
38
38
  end
39
39
 
40
40
  def extract_content_and_summary
@@ -12,7 +12,8 @@ module Peddler
12
12
  'APJ6JRA9NG5V4' => 'mws-eu.amazonservices.com',
13
13
  'A1VC38T7YXB528' => 'mws.amazonservices.jp',
14
14
  'A1AM78C64UM0Y8' => 'mws.amazonservices.com.mx',
15
- 'ATVPDKIKX0DER' => 'mws.amazonservices.com'
15
+ 'ATVPDKIKX0DER' => 'mws.amazonservices.com',
16
+ 'A39IBJ37TRP1C6' => 'mws.amazonservices.com.au'
16
17
  }.freeze
17
18
 
18
19
  BadId = Class.new(StandardError)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Peddler
4
- VERSION = '1.6.1'.freeze
4
+ VERSION = '1.6.2'.freeze
5
5
  end
@@ -137,6 +137,52 @@ class TestMWSFulfillmentOutboundShipmentClient < MiniTest::Test
137
137
  assert_equal operation, @client.operation
138
138
  end
139
139
 
140
+ def test_lists_return_reason_codes
141
+ seller_sku = 'ABC123'
142
+ seller_fulfillment_order_id = '123ABC'
143
+
144
+ operation = {
145
+ 'Action' => 'ListReturnReasonCodes',
146
+ 'SellerSKU' => seller_sku,
147
+ 'SellerFulfillmentOrderId' => seller_fulfillment_order_id
148
+ }
149
+
150
+ @client.stub(:run, nil) do
151
+ @client.list_return_reason_codes(
152
+ seller_sku,
153
+ seller_fulfillment_order_id: seller_fulfillment_order_id
154
+ )
155
+ end
156
+
157
+ assert_equal operation, @client.operation
158
+ end
159
+
160
+ def test_creates_fulfillment_return
161
+ seller_fulfillment_order_id = 'ABC123'
162
+
163
+ item = { seller_return_item_id: 'ABC123',
164
+ seller_fulfillment_order_item_id: 'ABC123',
165
+ amazon_shipment_id: 'ABC123',
166
+ return_reason_code: 'VALID_RETURN_REASON_CODE',
167
+ return_comment: 'RETURN COMMENT FROM CLIENT' }
168
+
169
+ operation = {
170
+ 'Action' => 'CreateFulfillmentReturn',
171
+ 'SellerFulfillmentOrderId' => seller_fulfillment_order_id,
172
+ 'Items.member.1.SellerReturnItemId' => item[:seller_return_item_id],
173
+ 'Items.member.1.SellerFulfillmentOrderItemId' => item[:seller_fulfillment_order_item_id],
174
+ 'Items.member.1.AmazonShipmentId' => item[:amazon_shipment_id],
175
+ 'Items.member.1.ReturnReasonCode' => item[:return_reason_code],
176
+ 'Items.member.1.ReturnComment' => item[:return_comment]
177
+ }
178
+
179
+ @client.stub(:run, nil) do
180
+ @client.create_fulfillment_return(seller_fulfillment_order_id, [item])
181
+ end
182
+
183
+ assert_equal operation, @client.operation
184
+ end
185
+
140
186
  def test_gets_service_status
141
187
  operation = {
142
188
  'Action' => 'GetServiceStatus'
@@ -73,10 +73,16 @@ class TestPeddlerFlatFileParser < MiniTest::Test
73
73
  assert_equal '�', parser.parse['Foo'][0]
74
74
  end
75
75
 
76
+ def test_handles_utf8_flat_files
77
+ body = "Foo\nfür\n"
78
+ parser = Peddler::FlatFileParser.new(build_mock_response(body, ascii: false), 'CP1252')
79
+ assert_equal 'für', parser.parse['Foo'][0]
80
+ end
81
+
76
82
  private
77
83
 
78
- def build_mock_response(body)
79
- body.force_encoding('ASCII-8BIT')
84
+ def build_mock_response(body, ascii: true)
85
+ body.force_encoding('ASCII-8BIT') if ascii
80
86
  headers = {
81
87
  'Content-MD5' => Digest::MD5.base64digest(body)
82
88
  }
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.1
4
+ version: 1.6.2
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-05-24 00:00:00.000000000 Z
11
+ date: 2017-09-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dig_rb
@@ -211,7 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
211
211
  version: '0'
212
212
  requirements: []
213
213
  rubyforge_project:
214
- rubygems_version: 2.6.8
214
+ rubygems_version: 2.6.11
215
215
  signing_key:
216
216
  specification_version: 4
217
217
  summary: Wraps the Amazon MWS APIs