retentiongrid 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 296a60c0128c31e8dcac9d228abbfa45368304af
4
- data.tar.gz: f7f6913b175940dd7201754c834f50172d4d5fe7
3
+ metadata.gz: 24fb32635d2a74736c03ef77f1da24fe73b68a79
4
+ data.tar.gz: 20292022dc0b3f0814184b84ac11a990dd1cd526
5
5
  SHA512:
6
- metadata.gz: b9a8e54ef544bc1fd23dcee0666b23acb156dae2bc6b5cd05d553d34811a633156f1170ab1a62310e06c70f09d71e9713fee18471a1712a38287363baef472b6
7
- data.tar.gz: 2e63450795275aa8377f4f7c0841fc78f4e2fd957a16f852ab0b21d79a71f0caa0105da8f52179ab3e13e7b54bacc94352cb892775dd65e92238e78b69afd9f1
6
+ metadata.gz: 5654c2ec32d372aad12587ab0d93e08c653779028312d3ab92c21702ceec21d8b5ecd9d62fa9086710caa6b97c8f7137b143299987e13cbbb8ff0e5a7f8d1110
7
+ data.tar.gz: accbccc386f6587cefb87901d6c616ea36baf8343b97e000e0d75d47d6a78fbfbf9d97fb78fbe773fc30dfce69128b1a186dedf744012d5636f4e1605c188ee5
@@ -32,7 +32,12 @@ module Retentiongrid
32
32
  # @raise [Retentiongrid::ServerError] (500) in case something went wrong on the retentiongrid server
33
33
  # @return [Httparty::Response]
34
34
  def get_with_response_check(*args)
35
- check_response_codes(get_without_response_check(*args))
35
+ begin
36
+ check_response_codes(get_without_response_check(*args))
37
+ rescue TooManyRequests => e
38
+ sleep 1
39
+ retry
40
+ end
36
41
  end
37
42
  alias_method :get_without_response_check, :get
38
43
  alias_method :get, :get_with_response_check
@@ -45,7 +50,12 @@ module Retentiongrid
45
50
  # @raise [Retentiongrid::ServerError] (500) in case something went wrong on the retentiongrid server
46
51
  # @return [Httparty::Response]
47
52
  def post_with_response_check(*args)
48
- check_response_codes(post_without_response_check(*args))
53
+ begin
54
+ check_response_codes(post_without_response_check(*args))
55
+ rescue TooManyRequests => e
56
+ sleep 1
57
+ retry
58
+ end
49
59
  end
50
60
  alias_method :post_without_response_check, :post
51
61
  alias_method :post, :post_with_response_check
@@ -58,7 +68,12 @@ module Retentiongrid
58
68
  # @raise [Retentiongrid::ServerError] (500) in case something went wrong on the retentiongrid server
59
69
  # @return [Httparty::Response]
60
70
  def delete_with_response_check(*args)
61
- check_response_codes(delete_without_response_check(*args))
71
+ begin
72
+ check_response_codes(delete_without_response_check(*args))
73
+ rescue TooManyRequests => e
74
+ sleep 1
75
+ retry
76
+ end
62
77
  end
63
78
  alias_method :delete_without_response_check, :delete
64
79
  alias_method :delete, :delete_with_response_check
@@ -78,6 +93,7 @@ module Retentiongrid
78
93
  when 405 then raise MethodNotAllowed.new(body)
79
94
  when 410 then raise Gone.new(body)
80
95
  when 422 then raise UnprocessableEntity.new(body)
96
+ when 429 then raise TooManyRequests.new(body)
81
97
  when 500 then raise ServerError, 'Internal Server Error'
82
98
  when 503 then raise Unavailable, 'Service Unavailable'
83
99
  else raise "Unknown response code: #{response.code}"
@@ -30,6 +30,9 @@ module Retentiongrid
30
30
  # The request was well-formed but was unable to be followed due to semantic errors.
31
31
  class UnprocessableEntity < HTTParty::Error; end # 422
32
32
 
33
+ # The request was ok, but you sent too many after each other
34
+ class TooManyRequests < HTTParty::Error; end # 429
35
+
33
36
  # Unspecified API server error.
34
37
  class ServerError < HTTParty::Error; end # 500
35
38
 
@@ -7,7 +7,7 @@ module Retentiongrid
7
7
  ATTRIBUTES_NAMES = [ :product_id, :available, :metadata,
8
8
  :title, :image_url, :currency, :price,
9
9
  :sale_price, :cost_price, :product_url,
10
- :product_created_at, :product_updated_at, :metadata
10
+ :product_created_at, :product_updated_at
11
11
  ].freeze
12
12
 
13
13
  ATTRIBUTES_NAMES.each do |attrib|
@@ -1,3 +1,3 @@
1
1
  module Retentiongrid
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.4"
3
3
  end
@@ -17,7 +17,7 @@ RSpec.describe LineItem do
17
17
  "product_id": 25,
18
18
  "variant_id": null,
19
19
  "sku": "",
20
- "name": "Protestsülze"
20
+ "name": "Protestsuelze"
21
21
  }
22
22
  }
23
23
  EOF
@@ -36,6 +36,13 @@ RSpec.describe Product do
36
36
  Product.find('123')
37
37
  end
38
38
 
39
+ it "should retry upon 429 TooManyRequests" do
40
+ stub_request(:get, "http://retentiongrid.apiary-mock.com/products/123").
41
+ to_return(:status => 429, :body => '429 Too Many Requests (5 request/s on average allowed. Burst of max 10/s require you to wait 1 second.)', :headers => {'Content-Type' => 'text/plain'}).then.
42
+ to_return(:status => 200, :body => valid_order, :headers => {'Content-Type' => 'application/json'})
43
+ Product.find('123')
44
+ end
45
+
39
46
  it "should build a Product from API response" do
40
47
  expect(subject.class).to eql Retentiongrid::Product
41
48
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: retentiongrid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christoph Bünte
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-19 00:00:00.000000000 Z
11
+ date: 2014-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -181,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
181
  version: '0'
182
182
  requirements: []
183
183
  rubyforge_project:
184
- rubygems_version: 2.2.0
184
+ rubygems_version: 2.2.2
185
185
  signing_key:
186
186
  specification_version: 4
187
187
  summary: A ruby client for retentiongrid.com API.