lib/smartsheet/error.rb in smartsheet-1.0.0.beta.2 vs lib/smartsheet/error.rb in smartsheet-1.0.0

- old
+ new

@@ -1,8 +1,9 @@ require 'forwardable' module Smartsheet + # Top-level Smartsheet Error class Error < StandardError; end # Errors for invalid requests, timeouts, etc. class RequestError < Error attr_reader :wrapped_exception @@ -11,14 +12,53 @@ super(ex.message) @wrapped_exception = ex end end - class ApiError < Error + # Errors for generic HTTP error codes + # @!attribute [r] status_code + # @return [Fixnum] HTTP status code + # @!attribute [r] reason_phrase + # @return [String] HTTP reason phrase + # @!attribute [r] headers + # @return [Hash] HTTP response headers + class HttpResponseError < Error + attr_reader :status_code, :reason_phrase, :headers + + def initialize(status_code:, reason_phrase:, headers:, message:) + super(message) + + @status_code = status_code + @reason_phrase = reason_phrase + @headers = headers + end + end + + # Errors for Smartsheet API error objects + # @see https://smartsheet-platform.github.io/api-docs/?ruby#error-object API Error Object Docs + # + # @!attribute [r] error_code + # @return [Fixnum] Smartsheet error code + # @see https://smartsheet-platform.github.io/api-docs/?ruby#complete-error-code-list API Error + # Code Docs + # @!attribute [r] message + # @return [String] Smartsheet error message + # @see https://smartsheet-platform.github.io/api-docs/?ruby#complete-error-code-list API Error + # Code Docs + # @!attribute [r] ref_id + # @return [String] Smartsheet error reference ID + # @!attribute [r] detail + # @return [Hash, Array, nil] optional details for some error scenarios + class ApiError < HttpResponseError extend Forwardable def initialize(error_response) - super(error_response.message) + super( + status_code: error_response.status_code, + reason_phrase: error_response.reason_phrase, + headers: error_response.headers, + message: error_response.message + ) @error_response = error_response end def_delegators :error_response, :error_code, :message, :ref_id, :detail \ No newline at end of file