class Contentful::Management::Error
All errors raised by the contentful gem are either instances of Contentful::Management::Error
or inherit from Contentful::Management::Error
Attributes
Public Class Methods
Source
# File lib/contentful/management/error.rb, line 22 def self.[](error_status_code) errors = { 400 => BadRequest, 401 => Unauthorized, 403 => AccessDenied, 404 => NotFound, 409 => Conflict, 422 => UnprocessableEntity, 429 => RateLimitExceeded, 500 => ServerError, 502 => BadGateway, 503 => ServiceUnavailable }.freeze errors.key?(error_status_code) ? errors[error_status_code] : Error end
Shortcut for creating specialized error classes USAGE rescue Contentful::Management::Error
Source
# File lib/contentful/management/error.rb, line 10 def initialize(response) @response = response @error = { url: response.request.endpoint, message: response.error_message, details: response.raw.body.instance_variable_get(:@contents) } super best_available_message end
Calls superclass method
Protected Instance Methods
Source
# File lib/contentful/management/error.rb, line 57 def additional_info [] end
Source
# File lib/contentful/management/error.rb, line 53 def additional_info? false end
Source
# File lib/contentful/management/error.rb, line 61 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 StandardError error_message << "Message: #{default_error_message}" end error_message << additional_info if additional_info? error_message.join("\n") end
Source
# File lib/contentful/management/error.rb, line 41 def default_error_message "The following error was received: #{@response.raw.body}" end
Source
# File lib/contentful/management/error.rb, line 45 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