lib/httpx/errors.rb in httpx-1.0.2 vs lib/httpx/errors.rb in httpx-1.1.0

- old
+ new

@@ -1,34 +1,49 @@ # frozen_string_literal: true module HTTPX + # the default exception class for exceptions raised by HTTPX. class Error < StandardError; end class UnsupportedSchemeError < Error; end class ConnectionError < Error; end + # Error raised when there was a timeout. Its subclasses allow for finer-grained + # control of which timeout happened. class TimeoutError < Error + # The timeout value which caused this error to be raised. attr_reader :timeout + # initializes the timeout exception with the +timeout+ causing the error, and the + # error +message+ for it. def initialize(timeout, message) @timeout = timeout super(message) end + # clones this error into a HTTPX::ConnectionTimeoutError. def to_connection_error ex = ConnectTimeoutError.new(@timeout, message) ex.set_backtrace(backtrace) ex end end + # Error raised when there was a timeout establishing the connection to a server. + # This may be raised due to timeouts during TCP and TLS (when applicable) connection + # establishment. class ConnectTimeoutError < TimeoutError; end + # Error raised when there was a timeout while sending a request, or receiving a response + # from the server. class RequestTimeoutError < TimeoutError + # The HTTPX::Request request object this exception refers to. attr_reader :request + # initializes the exception with the +request+ and +response+ it refers to, and the + # +timeout+ causing the error, and the def initialize(request, response, timeout) @request = request @response = response super(timeout, "Timed out after #{timeout} seconds") end @@ -36,40 +51,57 @@ def marshal_dump [message] end end + # Error raised when there was a timeout while receiving a response from the server. class ReadTimeoutError < RequestTimeoutError; end + # Error raised when there was a timeout while sending a request from the server. class WriteTimeoutError < RequestTimeoutError; end + # Error raised when there was a timeout while waiting for the HTTP/2 settings frame from the server. class SettingsTimeoutError < TimeoutError; end + # Error raised when there was a timeout while resolving a domain to an IP. class ResolveTimeoutError < TimeoutError; end + # Error raised when there was an error while resolving a domain to an IP. class ResolveError < Error; end + # Error raised when there was an error while resolving a domain to an IP + # using a HTTPX::Resolver::Native resolver. class NativeResolveError < ResolveError attr_reader :connection, :host + # initializes the exception with the +connection+ it refers to, the +host+ domain + # which failed to resolve, and the error +message+. def initialize(connection, host, message = "Can't resolve #{host}") @connection = connection @host = host super(message) end end + # The exception class for HTTP responses with 4xx or 5xx status. class HTTPError < Error + # The HTTPX::Response response object this exception refers to. attr_reader :response + # Creates the instance and assigns the HTTPX::Response +response+. def initialize(response) @response = response super("HTTP Error: #{@response.status} #{@response.headers}\n#{@response.body}") end + # The HTTP response status. + # + # error.status #=> 404 def status @response.status end end + # error raised when a request was sent a server which can't reproduce a response, and + # has therefore returned an HTTP response using the 421 status code. class MisdirectedRequestError < HTTPError; end end