Exception: CurrencyCloud::ApiError
- Inherits:
-
StandardError
- Object
- StandardError
- CurrencyCloud::ApiError
- Includes:
- ErrorUtils
- Defined in:
- lib/currency_cloud/errors/api_error.rb
Direct Known Subclasses
AuthenticationError, BadRequestError, ForbiddenError, InternalApplicationError, NotFoundError, TooManyRequestsError
Constant Summary
Constants included from ErrorUtils
ErrorUtils::REDACTED_PARAMS, ErrorUtils::REDACTED_STRING
Instance Attribute Summary collapse
-
#code ⇒ Object
readonly
Returns the value of attribute code.
-
#messages ⇒ Object
readonly
Returns the value of attribute messages.
-
#raw_response ⇒ Object
readonly
Returns the value of attribute raw_response.
-
#status_code ⇒ Object
readonly
Returns the value of attribute status_code.
Instance Method Summary collapse
-
#initialize(verb, route, params, raw_response) ⇒ ApiError
constructor
A new instance of ApiError.
- #to_s ⇒ Object
Methods included from ErrorUtils
Constructor Details
#initialize(verb, route, params, raw_response) ⇒ ApiError
Returns a new instance of ApiError.
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/currency_cloud/errors/api_error.rb', line 27 def initialize(verb, route, params, raw_response) @verb = verb @route = route @params = redacted_params(params) @raw_response = raw_response @status_code = raw_response.code errors = raw_response.parsed_response @code = errors['error_code'] @messages = [] return unless errors['error_messages'] = errors['error_messages'] if .is_a?(Hash) .each do |field, | if .is_a?(Array) .each do || @messages << ApiErrorMessage.new(field, ) end else @messages << ApiErrorMessage.new(field, ) end end else @messages << ApiErrorMessage.new('base', { 'code' => @code, 'message' => .to_s, 'params' => {} }) end end |
Instance Attribute Details
#code ⇒ Object (readonly)
Returns the value of attribute code.
25 26 27 |
# File 'lib/currency_cloud/errors/api_error.rb', line 25 def code @code end |
#messages ⇒ Object (readonly)
Returns the value of attribute messages.
25 26 27 |
# File 'lib/currency_cloud/errors/api_error.rb', line 25 def @messages end |
#raw_response ⇒ Object (readonly)
Returns the value of attribute raw_response.
25 26 27 |
# File 'lib/currency_cloud/errors/api_error.rb', line 25 def raw_response @raw_response end |
#status_code ⇒ Object (readonly)
Returns the value of attribute status_code.
25 26 27 |
# File 'lib/currency_cloud/errors/api_error.rb', line 25 def status_code @status_code end |
Instance Method Details
#to_s ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/currency_cloud/errors/api_error.rb', line 60 def to_s class_name = super string_params = Hash[@params.map { |k, v| [k.to_s, v.to_s] }] error_details = { 'platform' => platform, 'request' => { 'parameters' => string_params, 'verb' => @verb.to_s, 'url' => @route }, 'response' => { 'status_code' => status_code, 'date' => raw_response.headers['Date'], 'request_id' => (raw_response.headers['x-request-id'] || 0).to_i }, 'errors' => .map(&:to_h) } "#{class_name}#{$INPUT_RECORD_SEPARATOR}#{YAML.dump(error_details)}" end |