Sha256: 40e573caacfb03db2366c1e16c2d64033ef6d0bda28f21f8e336fa8ec2662068

Contents?: true

Size: 1.87 KB

Versions: 7

Compression:

Stored size: 1.87 KB

Contents

module LazyResource
  class ConnectionError < StandardError # :nodoc:
    attr_reader :response

    def initialize(response, message = nil)
      @response = response
      @message  = message
    end

    def to_s
      message = "Failed."
      message << "  Response code = #{response.code}." if response.respond_to?(:code)
      message << "  Response message = #{response.body}." if response.respond_to?(:body)
      message
    end
  end

  # Raised when a Timeout::Error occurs.
  class TimeoutError < ConnectionError
    def initialize(message)
      @message = message
    end
    def to_s; @message ;end
  end

  # Raised when a OpenSSL::SSL::SSLError occurs.
  class SSLError < ConnectionError
    def initialize(message)
      @message = message
    end
    def to_s; @message ;end
  end

  # 3xx Redirection
  class Redirection < ConnectionError # :nodoc:
    def to_s; (response.headers['Location'] || response.headers[:Location]) ? "#{super} => #{response.headers['Location'] || response.headers[:Location]}" : super; end
  end

  # 4xx Client Error
  class ClientError < ConnectionError; end # :nodoc:

  # 400 Bad Request
  class BadRequest < ClientError; end # :nodoc

  # 401 Unauthorized
  class UnauthorizedAccess < ClientError; end # :nodoc

  # 403 Forbidden
  class ForbiddenAccess < ClientError; end # :nodoc

  # 404 Not Found
  class ResourceNotFound < ClientError; end # :nodoc:

  # 409 Conflict
  class ResourceConflict < ClientError; end # :nodoc:

  # 410 Gone
  class ResourceGone < ClientError; end # :nodoc:
  
  # 422 Unprocessable Entity
  class UnprocessableEntity < ClientError; end # :nodoc:

  # 5xx Server Error
  class ServerError < ConnectionError; end # :nodoc:

  # 405 Method Not Allowed
  class MethodNotAllowed < ClientError # :nodoc:
    def allowed_methods
      @response.headers['Allow'].split(',').map { |verb| verb.strip.downcase.to_sym }
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
lazy_resource-0.5.0 lib/lazy_resource/errors.rb
lazy_resource-0.4.0 lib/lazy_resource/errors.rb
lazy_resource-0.3.3 lib/lazy_resource/errors.rb
lazy_resource-0.3.2 lib/lazy_resource/errors.rb
lazy_resource-0.3.0 lib/lazy_resource/errors.rb
lazy_resource-0.2.0 lib/lazy_resource/errors.rb
lazy_resource-0.1.0 lib/lazy_resource/errors.rb