Skip to content

Commit 5ca794b

Browse files
authored
Merge pull request #304 from bradleypriest/too-many-requests
Adds TooManyRequests (429) exception
2 parents 61d61a0 + 3a70ed3 commit 5ca794b

File tree

4 files changed

+10
-0
lines changed

4 files changed

+10
-0
lines changed

lib/active_resource/base.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ module ActiveResource
204204
# * 410 - ActiveResource::ResourceGone
205205
# * 412 - ActiveResource::PreconditionFailed
206206
# * 422 - ActiveResource::ResourceInvalid (rescued by save as validation errors)
207+
# * 429 - ActiveResource::TooManyRequests
207208
# * 401..499 - ActiveResource::ClientError
208209
# * 500..599 - ActiveResource::ServerError
209210
# * Other - ActiveResource::ConnectionError

lib/active_resource/connection.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,8 @@ def handle_response(response)
155155
raise(PreconditionFailed.new(response))
156156
when 422
157157
raise(ResourceInvalid.new(response))
158+
when 429
159+
raise(TooManyRequests.new(response))
158160
when 401...500
159161
raise(ClientError.new(response))
160162
when 500...600

lib/active_resource/exceptions.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ class ResourceGone < ClientError # :nodoc:
7575
class PreconditionFailed < ClientError # :nodoc:
7676
end
7777

78+
# 429 Too Many Requests
79+
class TooManyRequests < ClientError # :nodoc:
80+
end
81+
7882
# 5xx Server Error
7983
class ServerError < ConnectionError # :nodoc:
8084
end

test/cases/connection_test.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@ def test_handle_response
9595
# 422 is a validation error
9696
assert_response_raises ActiveResource::ResourceInvalid, 422
9797

98+
# 429 is too many requests
99+
assert_response_raises ActiveResource::TooManyRequests, 429
100+
98101
# 4xx are client errors.
99102
[402, 499].each do |code|
100103
assert_response_raises ActiveResource::ClientError, code

0 commit comments

Comments
 (0)