Sha256: a53066564a6f27fac0c6edc3b331c96377d878a8dbc2635c7bae92e5ec59fc87

Contents?: true

Size: 864 Bytes

Versions: 3

Compression:

Stored size: 864 Bytes

Contents

module DynamoDB
  # Failed response from Dynamo
  #
  # The #error can be:
  # * `ClientError` for 4XX responses
  # * `ServerError` for 5XX or unknown responses
  # * Network errors, which are enumerated in HttpHandler
  class FailureResponse
    attr_accessor :error, :body, :code

    def initialize(http_response = nil)
      @http_response = http_response
    end

    def success?
      false
    end

    def error
      @error ||= http_response_error
    end

    def body
      @body ||= @http_response && @http_response.body
    end

    def code
      @code ||= @http_response && @http_response.code
    end

    private

    def http_response_error
      if (400..499).include?(code.to_i)
        ClientError.new("#{code}: #{@http_response.message}")
      else
        ServerError.new("#{code}: #{@http_response.message}")
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dynamodb-1.2.1 lib/dynamodb/failure_response.rb
dynamodb-1.2.0 lib/dynamodb/failure_response.rb
dynamodb-1.1.1 lib/dynamodb/failure_response.rb