Skip to content

Commit be74268

Browse files
authored
Merge pull request #399 from kirbydcool/fixRateLimitResetParsing
#398. Fix X-RateLimit-Reset parsing.
2 parents 1592139 + cb22697 commit be74268

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

lib/intercom/request.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ def set_rate_limit_details(response)
110110
rate_limit_details = {}
111111
rate_limit_details[:limit] = response['X-RateLimit-Limit'].to_i if response['X-RateLimit-Limit']
112112
rate_limit_details[:remaining] = response['X-RateLimit-Remaining'].to_i if response['X-RateLimit-Remaining']
113-
rate_limit_details[:reset_at] = Time.parse(response['X-RateLimit-Reset']) if response['X-RateLimit-Reset']
113+
rate_limit_details[:reset_at] = Time.at(response['X-RateLimit-Reset'].to_i) if response['X-RateLimit-Reset']
114114
@rate_limit_details = rate_limit_details
115115
end
116116

spec/unit/intercom/request_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
it 'should call sleep for rate limit error three times' do
3434
# Use webmock to mock the HTTP request
3535
stub_request(:any, uri).\
36-
to_return(status: [429, "Too Many Requests"], headers: { 'X-RateLimit-Reset' => Time.now.utc + 10 })
36+
to_return(status: [429, "Too Many Requests"], headers: { 'X-RateLimit-Reset' => (Time.now.utc + 10).to_i.to_s })
3737
req = Intercom::Request.get(uri, "")
3838
req.handle_rate_limit=true
3939
req.expects(:sleep).times(3).with(any_parameters)
@@ -53,7 +53,7 @@
5353
it 'should call sleep for rate limit error just once' do
5454
# Use webmock to mock the HTTP request
5555
stub_request(:any, uri).\
56-
to_return(status: [429, "Too Many Requests"], headers: { 'X-RateLimit-Reset' => Time.now.utc + 10 }).\
56+
to_return(status: [429, "Too Many Requests"], headers: { 'X-RateLimit-Reset' => (Time.now.utc + 10).to_i.to_s }).\
5757
then.to_return(status: [200, "OK"])
5858
req = Intercom::Request.get(uri, "")
5959
req.handle_rate_limit=true
@@ -64,7 +64,7 @@
6464
it 'should not sleep if rate limit reset time has passed' do
6565
# Use webmock to mock the HTTP request
6666
stub_request(:any, uri).\
67-
to_return(status: [429, "Too Many Requests"], headers: { 'X-RateLimit-Reset' => Time.parse("February 25 2010").utc }).\
67+
to_return(status: [429, "Too Many Requests"], headers: { 'X-RateLimit-Reset' => Time.parse("February 25 2010").utc.to_i.to_s }).\
6868
then.to_return(status: [200, "OK"])
6969
req = Intercom::Request.get(uri, "")
7070
req.handle_rate_limit=true
@@ -80,7 +80,7 @@
8080
it 'should raise ResourceNotUniqueError error on resource_conflict code' do
8181
# Use webmock to mock the HTTP request
8282
stub_request(:put, uri).\
83-
to_return(status: [409, "Resource Already Exists"], headers: { 'X-RateLimit-Reset' => Time.now.utc + 10 }, body: {type: "error.list", errors: [ code: "resource_conflict" ]}.to_json)
83+
to_return(status: [409, "Resource Already Exists"], headers: { 'X-RateLimit-Reset' => (Time.now.utc + 10).to_i.to_s }, body: {type: "error.list", errors: [ code: "resource_conflict" ]}.to_json)
8484
req = Intercom::Request.put(uri, "")
8585
expect { req.execute(target_base_url=uri, username: "ted", secret: "") }.must_raise(Intercom::ResourceNotUniqueError)
8686
end

0 commit comments

Comments
 (0)