class Promisepay::Error
Custom error class for rescuing from all Promisepau errors
Public Class Methods
from_response(response, errors_format = nil)
click to toggle source
Returns the appropriate Promisepay::Error
subclass based on status
@param [Faraday::Response] response Faraday HTTP response @return [Promisepay::Error]
# File lib/promisepay/error.rb, line 8 def self.from_response(response, errors_format = nil) klass = case response.status when 400 then Promisepay::BadRequest when 401 then Promisepay::Unauthorized when 403 then Promisepay::Forbidden when 404 then Promisepay::NotFound when 405 then Promisepay::MethodNotAllowed when 406 then Promisepay::NotAcceptable when 409 then Promisepay::Conflict when 422 then Promisepay::UnprocessableEntity when 400..499 then Promisepay::ClientError when 500 then Promisepay::InternalServerError when 501 then Promisepay::NotImplemented when 502 then Promisepay::BadGateway when 503 then Promisepay::ServiceUnavailable when 500..599 then Promisepay::ServerError end (klass) ? klass.new(response, errors_format) : new(response, errors_format) end
new(response = nil, errors_format = nil)
click to toggle source
Calls superclass method
# File lib/promisepay/error.rb, line 28 def initialize(response = nil, errors_format = nil) @response = response @errors_format = errors_format super(build_error_message) end
Private Instance Methods
build_error_message()
click to toggle source
# File lib/promisepay/error.rb, line 36 def build_error_message return nil if @response.nil? || @response.body.nil? case @errors_format when 'raw' @response.body else json_response = JSON.parse(@response.body) message = '' message << json_response['message'] if json_response.key?('message') if json_response.key?('errors') message << json_response['errors'].map{|attribute, content| "#{attribute}: #{content}"}.join(", ") end message end end