Skip to content

Support for Net::HTTPPaymentRequired #392

Closed
@wilsondealmeida

Description

@wilsondealmeida

There's no ActiveResource exception for HTTP status 402.
It is already used by Shopify (https://shopify.dev/docs/api/usage/response-codes).

It can be an easy PR.

diff --git a/lib/active_resource/base.rb b/lib/active_resource/base.rb
index 766338b..f1189cb 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 e997a0a..b7168f0 100644
--- a/lib/active_resource/connection.rb
+++ b/lib/active_resource/connection.rb
@@ -140,6 +140,8 @@ module ActiveResource
           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 08daeca..916ed8a 100644
--- a/lib/active_resource/exceptions.rb
+++ b/lib/active_resource/exceptions.rb
@@ -57,6 +57,10 @@ module ActiveResource
   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 c879f4c..3dba252 100644
--- a/test/cases/connection_test.rb
+++ b/test/cases/connection_test.rb
@@ -74,6 +74,9 @@ class ConnectionTest < ActiveSupport::TestCase
     # 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions