mirror of
https://github.com/stripe/stripe-ruby.git
synced 2025-05-14 00:02:13 -04:00
95 lines
3.2 KiB
Ruby
95 lines
3.2 KiB
Ruby
module Stripe
|
|
# StripeError is the base error from which all other more specific Stripe
|
|
# errors derive.
|
|
class StripeError < StandardError
|
|
attr_reader :message
|
|
|
|
# Response contains a StripeResponse object that has some basic information
|
|
# about the response that conveyed the error.
|
|
attr_accessor :response
|
|
|
|
# These fields are now available as part of #response and that usage should
|
|
# be preferred.
|
|
attr_reader :http_body
|
|
attr_reader :http_headers
|
|
attr_reader :http_status
|
|
attr_reader :json_body # equivalent to #data
|
|
attr_reader :request_id
|
|
|
|
# Initializes a StripeError.
|
|
#
|
|
# Note: We should try to move away from the very heavy constructors ordered
|
|
# parameters to each just setting accessor values directly or optional
|
|
# arguments.
|
|
def initialize(message=nil, http_status=nil, http_body=nil, json_body=nil,
|
|
http_headers=nil)
|
|
@message = message
|
|
@http_status = http_status
|
|
@http_body = http_body
|
|
@http_headers = http_headers || {}
|
|
@json_body = json_body
|
|
@request_id = @http_headers[:request_id]
|
|
end
|
|
|
|
def to_s
|
|
status_string = @http_status.nil? ? "" : "(Status #{@http_status}) "
|
|
id_string = @request_id.nil? ? "" : "(Request #{@request_id}) "
|
|
"#{status_string}#{id_string}#{@message}"
|
|
end
|
|
end
|
|
|
|
# AuthenticationError is raised when invalid credentials are used to connect
|
|
# to Stripe's servers.
|
|
class AuthenticationError < StripeError
|
|
end
|
|
|
|
# APIConnectionError is raised in the event that the SDK can't connect to
|
|
# Stripe's servers. That can be for a variety of different reasons from a
|
|
# downed network to a bad TLS certificate.
|
|
class APIConnectionError < StripeError
|
|
end
|
|
|
|
# APIError is a generic error that may be raised in cases where none of the
|
|
# other named errors cover the problem. It could also be raised in the case
|
|
# that a new error has been introduced in the API, but this version of the
|
|
# Ruby SDK doesn't know how to handle it.
|
|
class APIError < StripeError
|
|
end
|
|
|
|
# CardError is raised when a user enters a card that can't be charged for
|
|
# some reason.
|
|
class CardError < StripeError
|
|
attr_reader :param, :code
|
|
|
|
def initialize(message, param, code, http_status=nil, http_body=nil, json_body=nil,
|
|
http_headers=nil)
|
|
super(message, http_status, http_body, json_body, http_headers)
|
|
@param = param
|
|
@code = code
|
|
end
|
|
end
|
|
|
|
# InvalidRequestError is raised when a request is initiated with invalid
|
|
# parameters.
|
|
class InvalidRequestError < StripeError
|
|
attr_accessor :param
|
|
|
|
def initialize(message, param, http_status=nil, http_body=nil, json_body=nil,
|
|
http_headers=nil)
|
|
super(message, http_status, http_body, json_body, http_headers)
|
|
@param = param
|
|
end
|
|
end
|
|
|
|
# PermissionError is raised in cases where access was attempted on a resource
|
|
# that wasn't allowed.
|
|
class PermissionError < StripeError
|
|
end
|
|
|
|
# RateLimitError is raised in cases where an account is putting too much load
|
|
# on Stripe's API servers (usually by performing too many requests). Please
|
|
# back off on request rate.
|
|
class RateLimitError < StripeError
|
|
end
|
|
end
|