Sha256: d029139d5cb2426a1deecaad82fe429b495d5450bfdd4e991689484e77683b53

Contents?: true

Size: 971 Bytes

Versions: 1

Compression:

Stored size: 971 Bytes

Contents

require "http/exceptions/version"
require "http/exceptions/http_exception"

module Http
  module Exceptions
    EXCEPTIONS = [
      SocketError,
      Errno::ETIMEDOUT,
      (Net.const_defined?(:ReadTimeout) ? Net::ReadTimeout : EOFError),
      (Net.const_defined?(:OpenTimeout) ? Net::OpenTimeout : EOFError),
      Net::ProtocolError,
      Errno::ECONNREFUSED,
      Errno::EHOSTDOWN,
      Errno::ECONNRESET,
      Errno::ENETUNREACH,
      Errno::EHOSTUNREACH,
      Errno::ECONNABORTED,
      OpenSSL::SSL::SSLError,
      EOFError,
    ].freeze

    def self.wrap_exception
      begin
        yield
      rescue *Exceptions::EXCEPTIONS => e
        raise HttpException.new original_exception: e
      end
    end

    def self.check_response!(res)
      raise HttpException.new(response: res) unless (200...300).include?(res.code)
      res
    end

    def self.wrap_and_check
      wrap_exception do
        check_response! yield
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tanga-http-exceptions-0.0.4 lib/http/exceptions.rb