Exception: Synapse::Error

Inherits:
StandardError
  • Object
show all
Defined in:
lib/synapse_api/error.rb

Overview

Custom class for handling HTTP and API errors.

Constant Summary collapse

ClientError =

Raised on a 4xx HTTP status code

Class.new(self)
Accepted =

Raised on the HTTP status code 202

Class.new(ClientError)
BadRequest =

Raised on the HTTP status code 400

Class.new(ClientError)
Unauthorized =

Raised on the HTTP status code 401

Class.new(ClientError)
RequestDeclined =

Raised on the HTTP status code 402

Class.new(ClientError)
NotFound =

Raised on the HTTP status code 404

Class.new(ClientError)
Conflict =

Raised on the HTTP status code 409

Class.new(ClientError)
TooManyRequests =

Raised on the HTTP status code 429

Class.new(ClientError)
ServerError =

Raised on a 5xx HTTP status code

Class.new(self)
InternalServerError =

Raised on the HTTP status code 500

Class.new(ServerError)
ServiceUnavailable =

Raised on the HTTP status code 503

Class.new(ServerError)
Unknown =

Raised on unexpected HTTP status codes

Class.new(self)
ERRORS =

HTTP status code to Error subclass mapping

{
  '202' => Synapse::Error::Accepted,
  '400' => Synapse::Error::BadRequest,
  '401' => Synapse::Error::Unauthorized,
  '402' => Synapse::Error::RequestDeclined,
  '404' => Synapse::Error::NotFound,
  '409' => Synapse::Error::Conflict,
  '429' => Synapse::Error::TooManyRequests,
  '500' => Synapse::Error::InternalServerError,
  '503' => Synapse::Error::ServiceUnavailable,
}.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message: '', code: nil, response: {}, http_code:) ⇒ Synapse::Error

Initializes a new Error object

Parameters:

  • message (Exception, String) (defaults to: '')
  • code (Integer) (defaults to: nil)
  • response (Hash) (defaults to: {})


106
107
108
109
110
111
112
# File 'lib/synapse_api/error.rb', line 106

def initialize(message: '', code: nil, response: {}, http_code:)
  super(message)
  @code     = code
  @response = response
  @message = message
  @http_code = http_code
end

Instance Attribute Details

#codeInteger (readonly)

The SynapsePay API Error Code

Returns:

  • (Integer)


56
57
58
# File 'lib/synapse_api/error.rb', line 56

def code
  @code
end

#http_codeInteger (readonly)

The SynapsePay API Error Code

Returns:

  • (Integer)


56
57
58
# File 'lib/synapse_api/error.rb', line 56

def http_code
  @http_code
end

#messageHash (readonly)

The JSON HTTP response in Hash form

Returns:

  • (Hash)


60
61
62
# File 'lib/synapse_api/error.rb', line 60

def message
  @message
end

#responseHash (readonly)

The JSON HTTP response in Hash form

Returns:

  • (Hash)


60
61
62
# File 'lib/synapse_api/error.rb', line 60

def response
  @response
end

Class Method Details

.from_response(body) ⇒ Synapse::Error

Create a new error from an HTTP response

Parameters:

  • body (String)
  • code (Integer)
  • http_code (Integer)

Returns:



68
69
70
71
72
73
# File 'lib/synapse_api/error.rb', line 68

def from_response(body)
  message, error_code, http_code = parse_error(body)
  http_code = http_code.to_s
  klass = ERRORS[http_code] || Synapse::Error::Unknown
  klass.new(message: message, code: error_code, response: body, http_code: http_code)
end