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
Raised on the HTTP status code 503
- TooManyRequests
Raised on the HTTP status code 429
Raised on the HTTP status code 401
Attributes
The SynapsePay API Error
Code
@return [Integer]
The SynapsePay API Error
Code
@return [Integer]
The JSON HTTP response in Hash form @return [Hash]
The JSON HTTP response in Hash form @return [Hash]
Public Class Methods
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
Initializes a new Error
object @param message [Exception, String] @param code [Integer] @param response [Hash] @return [Synapse::Error]
# 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
# 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