class SimpleJSONAPIClient::Errors::APIError
Constants
- KNOWN_ERRORS
Attributes
response[R]
Public Class Methods
generate(response)
click to toggle source
# File lib/simple_jsonapi_client/errors/api_error.rb, line 16 def self.generate(response) error = KNOWN_ERRORS[response.status] SimpleJSONAPIClient::Errors.const_get(error).new(response) end
new(response)
click to toggle source
Calls superclass method
# File lib/simple_jsonapi_client/errors/api_error.rb, line 24 def initialize(response) @response = response super(full_message) end
Public Instance Methods
codes()
click to toggle source
# File lib/simple_jsonapi_client/errors/api_error.rb, line 48 def codes @codes ||= errors.map { |error| error['code'] }.compact end
details()
click to toggle source
# File lib/simple_jsonapi_client/errors/api_error.rb, line 52 def details @details ||= errors.map { |error| error['detail'] }.compact end
errors()
click to toggle source
# File lib/simple_jsonapi_client/errors/api_error.rb, line 29 def errors Array(body['errors']) end
full_message()
click to toggle source
# File lib/simple_jsonapi_client/errors/api_error.rb, line 43 def full_message "The API returned a #{status} error status and this content:\n" + pretty_printed_response.each_line.map { |line| " #{line}" }.join end
message()
click to toggle source
# File lib/simple_jsonapi_client/errors/api_error.rb, line 33 def message if !codes.empty? codes_message elsif !details.empty? details_message else default_message end end
Private Instance Methods
codes_message()
click to toggle source
# File lib/simple_jsonapi_client/errors/api_error.rb, line 62 def codes_message codes_word = codes.size == 1 ? 'code' : 'codes' "The API returned a #{status} error status with the following error #{codes_word}: #{ codes.map(&:inspect).join(', ') }" end
default_message()
click to toggle source
# File lib/simple_jsonapi_client/errors/api_error.rb, line 76 def default_message "The API responded with a #{status} error status." end
details_message()
click to toggle source
# File lib/simple_jsonapi_client/errors/api_error.rb, line 69 def details_message details_word = details.size == 1 ? 'detail' : 'details' "The API returned a #{status} error status with the following error #{details_word}: #{ details.map(&:inspect).join(', ') }" end
pretty_printed_response()
click to toggle source
# File lib/simple_jsonapi_client/errors/api_error.rb, line 58 def pretty_printed_response JSON.pretty_generate(body) end