Sha256: ccad6e2e14243a2c3e7d31f252ee1772e79aa9ce8ed9b26f8c03227f3a86e3d0

Contents?: true

Size: 1.32 KB

Versions: 22

Compression:

Stored size: 1.32 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 || Resolver::RESOLVE_TIMEOUT
    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

22 entries across 22 versions & 1 rubygems

Version Path
httpx-0.17.0 lib/httpx/resolver/system.rb
httpx-0.16.1 lib/httpx/resolver/system.rb
httpx-0.16.0 lib/httpx/resolver/system.rb
httpx-0.15.4 lib/httpx/resolver/system.rb
httpx-0.15.3 lib/httpx/resolver/system.rb
httpx-0.15.2 lib/httpx/resolver/system.rb
httpx-0.15.1 lib/httpx/resolver/system.rb
httpx-0.15.0 lib/httpx/resolver/system.rb
httpx-0.14.5 lib/httpx/resolver/system.rb
httpx-0.14.4 lib/httpx/resolver/system.rb
httpx-0.14.3 lib/httpx/resolver/system.rb
httpx-0.14.2 lib/httpx/resolver/system.rb
httpx-0.14.1 lib/httpx/resolver/system.rb
httpx-0.14.0 lib/httpx/resolver/system.rb
httpx-0.13.2 lib/httpx/resolver/system.rb
httpx-0.13.1 lib/httpx/resolver/system.rb
httpx-0.13.0 lib/httpx/resolver/system.rb
httpx-0.12.0 lib/httpx/resolver/system.rb
httpx-0.11.3 lib/httpx/resolver/system.rb
httpx-0.11.2 lib/httpx/resolver/system.rb