diff --git a/lib/active_resource/base.rb b/lib/active_resource/base.rb index 766338b26f..f1189cb432 100644 --- a/lib/active_resource/base.rb +++ b/lib/active_resource/base.rb @@ -213,6 +213,7 @@ module ActiveResource # * 301, 302, 303, 307 - ActiveResource::Redirection # * 400 - ActiveResource::BadRequest # * 401 - ActiveResource::UnauthorizedAccess + # * 402 - ActiveResource::PaymentRequired # * 403 - ActiveResource::ForbiddenAccess # * 404 - ActiveResource::ResourceNotFound # * 405 - ActiveResource::MethodNotAllowed diff --git a/lib/active_resource/connection.rb b/lib/active_resource/connection.rb index ca2515c421..0fffb0415b 100644 --- a/lib/active_resource/connection.rb +++ b/lib/active_resource/connection.rb @@ -140,6 +140,8 @@ def handle_response(response) raise(BadRequest.new(response)) when 401 raise(UnauthorizedAccess.new(response)) + when 402 + raise(PaymentRequired.new(response)) when 403 raise(ForbiddenAccess.new(response)) when 404 diff --git a/lib/active_resource/exceptions.rb b/lib/active_resource/exceptions.rb index 08daecafc3..916ed8a8c9 100644 --- a/lib/active_resource/exceptions.rb +++ b/lib/active_resource/exceptions.rb @@ -57,6 +57,10 @@ class BadRequest < ClientError # :nodoc: class UnauthorizedAccess < ClientError # :nodoc: end + # 402 Payment Required + class PaymentRequired < ClientError # :nodoc: + end + # 403 Forbidden class ForbiddenAccess < ClientError # :nodoc: end diff --git a/test/cases/connection_test.rb b/test/cases/connection_test.rb index 3506adced0..a4265f4dde 100644 --- a/test/cases/connection_test.rb +++ b/test/cases/connection_test.rb @@ -74,6 +74,9 @@ def test_handle_response # 401 is an unauthorized request assert_response_raises ActiveResource::UnauthorizedAccess, 401 + # 402 is a payment required error. + assert_response_raises ActiveResource::PaymentRequired, 402 + # 403 is a forbidden request (and authorizing will not help) assert_response_raises ActiveResource::ForbiddenAccess, 403