Module: Net::Hippie
- Defined in:
- lib/net/hippie.rb,
lib/net/hippie/client.rb,
lib/net/hippie/version.rb,
lib/net/hippie/dns_cache.rb,
lib/net/hippie/connection.rb,
lib/net/hippie/tls_parser.rb,
lib/net/hippie/connection_pool.rb,
lib/net/hippie/content_type_mapper.rb
Overview
High-performance HTTP client with connection pooling and DNS caching.
Defined Under Namespace
Modules: TlsParser
Classes: Client, Connection, ConnectionPool, ContentTypeMapper, DnsCache
Constant Summary
collapse
- CONNECTION_ERRORS =
[
EOFError,
Errno::ECONNREFUSED,
Errno::ECONNRESET,
Errno::EHOSTUNREACH,
Errno::EINVAL,
Errno::EPIPE,
Errno::ECONNABORTED,
Errno::ETIMEDOUT,
IOError,
Net::OpenTimeout,
Net::ProtocolError,
Net::ReadTimeout,
Net::WriteTimeout,
OpenSSL::OpenSSLError,
OpenSSL::SSL::SSLError,
SocketError,
Timeout::Error
].freeze
- BASIC_PREFIX =
'Basic '
- BEARER_PREFIX =
'Bearer '
- VERSION =
'1.5.1'
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.logger ⇒ Object
47
48
49
|
# File 'lib/net/hippie.rb', line 47
def logger
@logger ||= Logger.new(nil)
end
|
.verify_mode ⇒ Object
51
52
53
|
# File 'lib/net/hippie.rb', line 51
def verify_mode
@verify_mode ||= OpenSSL::SSL::VERIFY_PEER
end
|
Class Method Details
.basic_auth(username, password) ⇒ Object
55
56
57
|
# File 'lib/net/hippie.rb', line 55
def basic_auth(username, password)
BASIC_PREFIX + ::Base64.strict_encode64("#{username}:#{password}")
end
|
.bearer_auth(token) ⇒ Object
59
60
61
|
# File 'lib/net/hippie.rb', line 59
def bearer_auth(token)
BEARER_PREFIX + token
end
|
.default_client ⇒ Object
63
64
65
|
# File 'lib/net/hippie.rb', line 63
def default_client
@default_client ||= Client.new(follow_redirects: 3, logger: logger)
end
|
.reset_default_client! ⇒ Object
67
68
69
|
# File 'lib/net/hippie.rb', line 67
def reset_default_client!
@default_client = nil
end
|
.resolve(hostname, timeout: 5) ⇒ Object
77
78
79
80
81
82
|
# File 'lib/net/hippie.rb', line 77
def resolve(hostname, timeout: 5)
Timeout.timeout(timeout) do
addresses = Resolv.getaddresses(hostname)
addresses.find { |a| a.match?(/^\d+\.\d+\.\d+\.\d+$/) } || addresses.first
end
end
|