class Synapse::Error

Custom class for handling HTTP and API errors.

Constants

Accepted

Raised on the HTTP status code 202

BadRequest

Raised on the HTTP status code 400

ClientError

Raised on a 4xx HTTP status code

Conflict

Raised on the HTTP status code 409

ERRORS

HTTP status code to Error subclass mapping

InternalServerError

Raised on the HTTP status code 500

NotFound

Raised on the HTTP status code 404

RequestDeclined

Raised on the HTTP status code 402

ServerError

Raised on a 5xx HTTP status code

ServiceUnavailable

Raised on the HTTP status code 503

TooManyRequests

Raised on the HTTP status code 429

Unauthorized

Raised on the HTTP status code 401

Attributes

code[R]

The SynapsePay API Error Code

@return [Integer]

http_code[R]

The SynapsePay API Error Code

@return [Integer]

message[R]

The JSON HTTP response in Hash form @return [Hash]

response[R]

The JSON HTTP response in Hash form @return [Hash]

Public Class Methods

from_response(body) click to toggle source

Create a new error from an HTTP response @param body [String] @param code [Integer] @param http_code [Integer] @return [Synapse::Error]

# File lib/synapse_api/error.rb, line 65
def from_response(body)
  message, error_code, http_code = parse_error(body)
  http_code = http_code.to_s
  klass = ERRORS[http_code] || Synapse::Error
  klass.new(message: message, code: error_code, response: body, http_code: http_code)
end
new(message: '', code: nil, response: {}, http_code:) click to toggle source

Initializes a new Error object @param message [Exception, String] @param code [Integer] @param response [Hash] @return [Synapse::Error]

Calls superclass method
# File lib/synapse_api/error.rb, line 103
def initialize(message: '', code: nil, response: {}, http_code:)
  super(message)
  @code     = code
  @response = response
  @message = message
  @http_code = http_code
end

Private Class Methods

parse_error(body) click to toggle source
# File lib/synapse_api/error.rb, line 74
def parse_error(body)

  if body.nil? || body.empty?
    ['', nil, nil]

  elsif body['mfa'] && body.is_a?(Hash)
    ["#{body['mfa']["message"] } acces_token: #{body['mfa']["access_token"]}", body['error_code'], body['http_code']]
  elsif body[:mfa] && body.is_a?(Hash)
    ["#{body[:mfa][:message] } acces_token: #{body[:mfa][:access_token]}", body[:error_code], body[:http_code]]

  elsif body['message'] && body.is_a?(Hash)
    [body["message"]["en"], body['error_code'], body['http_code']]
   elsif body[:message] && body.is_a?(Hash)
    [body[:message][:en], body[:error_code], body[:http_code]]

  elsif body.is_a?(Hash) && body['error'].is_a?(Hash)
    [body['error']['en'], body['error_code'], body['http_code']]
  elsif body.is_a?(Hash) && body[:error].is_a?(Hash)
    [body[:error][:en], body[:error_code], body[:http_code]]

  end
end