class Contentful::Error
All errors raised by the contentful gem are either instances of Contentful::Error
or inherit from Contentful::Error
Attributes
Public Class Methods
Source
# File lib/contentful/error.rb, line 14 def self.[](error_status_code) errors = { 400 => BadRequest, 401 => Unauthorized, 403 => AccessDenied, 404 => NotFound, 429 => RateLimitExceeded, 500 => ServerError, 502 => BadGateway, 503 => ServiceUnavailable } errors.key?(error_status_code) ? errors[error_status_code] : Error end
Shortcut for creating specialized error classes USAGE rescue Contentful::Error
Source
# File lib/contentful/error.rb, line 7 def initialize(response) @response = response super best_available_message end
Calls superclass method
Protected Instance Methods
Source
# File lib/contentful/error.rb, line 51 def best_available_message error_message = [ "HTTP status code: #{@response.raw.status}" ] begin response_json = @response.load_json message = response_json.fetch('message', default_error_message) details = response_json.fetch('details', nil) request_id = response_json.fetch('requestId', nil) error_message << "Message: #{message}" error_message << "Details: #{handle_details(details)}" if details error_message << "Request ID: #{request_id}" if request_id rescue error_message << "Message: #{default_error_message}" end error_message << additional_info if additional_info? error_message.join("\n") end
Source
# File lib/contentful/error.rb, line 31 def default_error_message "The following error was received: #{@response.raw.body}" end
Source
# File lib/contentful/error.rb, line 35 def handle_details(details) if details.is_a?(Hash) details.map { |k, v| "#{k.inspect}=>#{v.inspect}" }.join(', ').then { |s| "{#{s}}" } else details.to_s end end