Sha256: f18f9493e681cd0f2abb9f76914319b110222f87df8da6e40b01a449c133e45c

Contents?: true

Size: 1.22 KB

Versions: 24

Compression:

Stored size: 1.22 KB

Contents

class Ey::Core::Response
  class Error < StandardError
    attr_reader :response

    def initialize(response)
      @response = response
      super(
        {
          :status  => response.status,
          :headers => response.headers,
          :body    => response.body,
          :request => response.request
        }.inspect
      )
    end
  end

  BadRequest        = Class.new(Error)
  Conflict          = Class.new(Error)
  NotFound          = Class.new(Error)
  RateLimitExceeded = Class.new(Error)
  Unauthorized      = Class.new(Error)
  Unexpected        = Class.new(Error)
  Unprocessable     = Class.new(Error)

  EXCEPTION_MAPPING = {
    400 => BadRequest,
    401 => Unauthorized,
    404 => NotFound,
    409 => Conflict,
    422 => Unprocessable,
    429 => RateLimitExceeded,
    500 => Unexpected,
  }

  attr_reader :headers, :status, :body, :request

  def initialize(opts = {})
    @status  = opts[:status]
    @headers = opts[:headers]
    @body    = opts[:body]
    @request = opts[:request]
  end

  def successful?
    self.status >= 200 && self.status <= 299 || self.status == 304
  end

  def raise!
    if !successful?
      raise (EXCEPTION_MAPPING[self.status] || Error).new(self)
    else self
    end
  end
end

Version data entries

24 entries across 24 versions & 2 rubygems

Version Path
ey-core-3.1.2 lib/ey-core/response.rb
ey-core-3.1.1 lib/ey-core/response.rb
ey-core-3.1.0 lib/ey-core/response.rb
ey-core-3.0.5 lib/ey-core/response.rb
ey-core-3.0.4 lib/ey-core/response.rb
ey-core-3.0.3 lib/ey-core/response.rb
ey-core-3.0.2 lib/ey-core/response.rb
ey-core-3.0.1 lib/ey-core/response.rb
ey-core-3.0.0 lib/ey-core/response.rb
ey-pro-cli-0.0.17 lib/vendor/core/ey-core/response.rb
ey-pro-cli-0.0.16 lib/vendor/core/ey-core/response.rb
ey-pro-cli-0.0.15 lib/vendor/core/ey-core/response.rb
ey-pro-cli-0.0.14 lib/vendor/core/ey-core/response.rb
ey-pro-cli-0.0.13 lib/vendor/core/ey-core/response.rb
ey-pro-cli-0.0.12 lib/vendor/core/ey-core/response.rb
ey-pro-cli-0.0.11 lib/vendor/core/ey-core/response.rb
ey-pro-cli-0.0.10 lib/vendor/core/ey-core/response.rb
ey-pro-cli-0.0.9 lib/vendor/core/ey-core/response.rb
ey-pro-cli-0.0.8 lib/vendor/core/ey-core/response.rb
ey-pro-cli-0.0.7 lib/vendor/core/ey-core/response.rb