module Barzahlen::Error
Public Class Methods
generate_error_from_response(response_body)
click to toggle source
This generates ApiErrors based on the response error classes of CPS
# File lib/barzahlen/error.rb, line 55 def self.generate_error_from_response(response_body) error_hash = generate_error_hash_with_symbols(response_body) case error_hash[:error_class] when "auth" return AuthError.new( error_hash ) when "transport" return TransportError.new( error_hash ) when "idempotency" return IdempotencyError.new( error_hash ) when "rate_limit" return RateLimitError.new( error_hash ) when "invalid_format" return InvalidFormatError.new( error_hash ) when "invalid_state" return InvalidStateError.new( error_hash ) when "invalid_parameter" return InvalidParameterError.new( error_hash ) when "not_allowed" return NotAllowedError.new( error_hash ) when "server_error" return ServerError.new( error_hash ) else return UnexpectedError.new( error_hash ) end end
Private Class Methods
generate_error_hash_with_symbols(body)
click to toggle source
# File lib/barzahlen/error.rb, line 94 def self.generate_error_hash_with_symbols(body) if body.is_a?(Hash) error_hash = self.symbolize_keys(body) elsif body.is_a?(String) error_hash = parse_json(body) || {} else error_hash = Hash.new end error_hash[:error_class] ||= "Unexpected_Error" error_hash[:error_code] ||= "Unknown error code (body): \"#{body.to_s}\"" error_hash[:message] ||= "Please contact viafintech to help us fix that as soon as possible." error_hash[:documentation_url] ||= "https://www.viafintech.com/contact/" error_hash[:request_id] ||= "not_available" error_hash end
parse_json(json)
click to toggle source
# File lib/barzahlen/error.rb, line 85 def self.parse_json(json) begin hash = JSON.parse(json) rescue JSON::ParserError => e return nil end self.symbolize_keys(hash) end
symbolize_keys(hash)
click to toggle source
# File lib/barzahlen/error.rb, line 112 def self.symbolize_keys(hash) Hash[hash.map{ |k, v| [k.to_sym, v] }] end