class Contentful::Error

All errors raised by the contentful gem are either instances of Contentful::Error or inherit from Contentful::Error

Attributes

response[R]

Public Class Methods

[](error_status_code) click to toggle source

Shortcut for creating specialized error classes USAGE rescue Contentful::Error

# 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
new(response) click to toggle source
Calls superclass method
# File lib/contentful/error.rb, line 7
def initialize(response)
  @response = response
  super best_available_message
end

Protected Instance Methods

additional_info() click to toggle source
# File lib/contentful/error.rb, line 43
def additional_info
  []
end
additional_info?() click to toggle source
# File lib/contentful/error.rb, line 39
def additional_info?
  false
end
best_available_message() click to toggle source
# File lib/contentful/error.rb, line 47
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
default_error_message() click to toggle source
# File lib/contentful/error.rb, line 31
def default_error_message
  "The following error was received: #{@response.raw.body}"
end
handle_details(details) click to toggle source
# File lib/contentful/error.rb, line 35
def handle_details(details)
  details.to_s
end