active_fulfillment 3.2.1 → 3.2.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 +4 -4
- data/CHANGELOG.md +3 -0
- data/lib/active_fulfillment/services/amazon_mws.rb +16 -6
- data/lib/active_fulfillment/version.rb +1 -1
- data/test/unit/services/amazon_mws_test.rb +20 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d288b33870248b76342ef2226467f4c782fc37cc
|
4
|
+
data.tar.gz: 545b5ad66e986c085c24accd94ce68e6a41c40d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79a0204832b57d4609ff932eef6310e13c39e362469c1bd82e62a0e829eff49498641ccd736e19e1b961f718e70c40baa2216726850ad705f609409cc3c5a75b
|
7
|
+
data.tar.gz: 8217c752ca10dd4384c16c0cd81eb621b3ddc8f8442f43fd6b3db13b3f9376150171f1bfe5960f7a02f49619434ff42f6a754ed2f1952762206f5da62afccd50
|
data/CHANGELOG.md
CHANGED
@@ -110,12 +110,14 @@ module ActiveFulfillment
|
|
110
110
|
|
111
111
|
def fetch_stock_levels(options = {})
|
112
112
|
options[:skus] = [options.delete(:sku)] if options.include?(:sku)
|
113
|
-
|
113
|
+
max_retries = options[:max_retries] || 0
|
114
|
+
|
115
|
+
response = with_error_handling(max_retries) do
|
114
116
|
data = commit :post, 'FulfillmentInventory', build_inventory_list_request(options)
|
115
117
|
parse_inventory_response(parse_document(data))
|
116
118
|
end
|
117
119
|
while token = response.params['next_token'] do
|
118
|
-
next_page = with_error_handling do
|
120
|
+
next_page = with_error_handling(max_retries) do
|
119
121
|
data = commit :post, 'FulfillmentInventory', build_next_inventory_list_request(token)
|
120
122
|
parse_inventory_response(parse_document(data))
|
121
123
|
end
|
@@ -429,10 +431,18 @@ module ActiveFulfillment
|
|
429
431
|
|
430
432
|
private
|
431
433
|
|
432
|
-
def with_error_handling
|
433
|
-
|
434
|
-
|
435
|
-
|
434
|
+
def with_error_handling(max_retries = 0)
|
435
|
+
retries = 0
|
436
|
+
begin
|
437
|
+
yield
|
438
|
+
rescue ActiveUtils::ResponseError => e
|
439
|
+
if e.response.code == 503 && retries < max_retries
|
440
|
+
retries += 1
|
441
|
+
retry
|
442
|
+
else
|
443
|
+
handle_error(e)
|
444
|
+
end
|
445
|
+
end
|
436
446
|
end
|
437
447
|
|
438
448
|
def sleep_for_throttle_options(throttle_options, index)
|
@@ -337,6 +337,17 @@ class AmazonMarketplaceWebServiceTest < Minitest::Test
|
|
337
337
|
assert_equal 5259, response.stock_levels['GN-01-02A']
|
338
338
|
end
|
339
339
|
|
340
|
+
def test_get_inventory_for_specific_skus_requests_correct_skus
|
341
|
+
requested_skus = ['GN-00-01A', 'GN-00-02A', 'GN-01-01A', 'GN-01-02A']
|
342
|
+
@service.expects(:commit).with(any_parameters) do |_method, _amazon_action, xml|
|
343
|
+
assert_equal xml['SellerSkus.member.1'], requested_skus[0]
|
344
|
+
assert_equal xml['SellerSkus.member.2'], requested_skus[1]
|
345
|
+
assert_equal xml['SellerSkus.member.3'], requested_skus[2]
|
346
|
+
assert_equal xml['SellerSkus.member.4'], requested_skus[3]
|
347
|
+
end
|
348
|
+
@service.fetch_stock_levels(skus: requested_skus)
|
349
|
+
end
|
350
|
+
|
340
351
|
def test_get_inventory_multipage_missing_stock
|
341
352
|
|
342
353
|
@service.expects(:ssl_post).with { |uri, query, headers|
|
@@ -488,6 +499,15 @@ class AmazonMarketplaceWebServiceTest < Minitest::Test
|
|
488
499
|
assert !constructed_address[nil]
|
489
500
|
end
|
490
501
|
|
502
|
+
def test_retry_on_error
|
503
|
+
retries = 5
|
504
|
+
http_response = build_mock_response(response_from_503, "", 503)
|
505
|
+
@service.expects(:ssl_post).raises(ActiveUtils::ResponseError.new(http_response)).times(retries + 1)
|
506
|
+
|
507
|
+
response = @service.fetch_stock_levels(max_retries: retries)
|
508
|
+
refute_predicate response, :success?
|
509
|
+
end
|
510
|
+
|
491
511
|
private
|
492
512
|
def build_mock_response(response, message, code = "200")
|
493
513
|
http_response = stub(:code => code, :message => message)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_fulfillment
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cody Fauser
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-09-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|