Sha256: 6d3c7fe9c434b94a847d11bc83cae80741f5ead4939e5da4b9277a27b78311a8
Contents?: true
Size: 1.3 KB
Versions: 2
Compression:
Stored size: 1.3 KB
Contents
# frozen_string_literal: true require "forwardable" require "resolv" module HTTPX class Resolver::System include Resolver::ResolverMixin RESOLV_ERRORS = [Resolv::ResolvError, Resolv::DNS::Requester::RequestError, Resolv::DNS::EncodeError, Resolv::DNS::DecodeError].freeze def initialize(options) @options = Options.new(options) @resolver_options = @options.resolver_options @state = :idle resolv_options = @resolver_options.dup timeouts = resolv_options.delete(:timeouts) resolv_options.delete(:cache) @resolver = Resolv::DNS.new(resolv_options.empty? ? nil : resolv_options) @resolver.timeouts = timeouts if timeouts end def closed? true end def empty? true end def <<(connection) hostname = connection.origin.host addresses = connection.addresses || ip_resolve(hostname) || system_resolve(hostname) || @resolver.getaddresses(hostname) throw(:resolve_error, resolve_error(hostname)) if addresses.empty? emit_addresses(connection, addresses) rescue Errno::EHOSTUNREACH, *RESOLV_ERRORS => e emit_resolve_error(connection, hostname, e) end def uncache(*); end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
httpx-0.10.2 | lib/httpx/resolver/system.rb |
httpx-0.10.1 | lib/httpx/resolver/system.rb |