class HttpConnectionOptions
Attributes
bind[R]
bind_port[R]
connect_timeout[R]
host[R]
https[W]
inactivity_timeout[R]
port[R]
proxy[R]
tls[R]
Public Class Methods
new(uri, options)
click to toggle source
# File lib/em-http/http_connection_options.rb, line 6 def initialize(uri, options) @connect_timeout = options[:connect_timeout] || 5 # default connection setup timeout @inactivity_timeout = options[:inactivity_timeout] ||= 10 # default connection inactivity (post-setup) timeout @tls = options[:tls] || options[:ssl] || {} if bind = options[:bind] @bind = bind[:host] || '0.0.0.0' # Eventmachine will open a UNIX socket if bind :port # is explicitly set to nil @bind_port = bind[:port] end uri = uri.kind_of?(Addressable::URI) ? uri : Addressable::URI::parse(uri.to_s) @https = uri.scheme == "https" uri.port ||= (@https ? 443 : 80) @tls[:sni_hostname] = uri.hostname @proxy = options[:proxy] || proxy_from_env if proxy @host = proxy[:host] @port = proxy[:port] else @host = uri.hostname @port = uri.port end end
Public Instance Methods
connect_proxy?()
click to toggle source
# File lib/em-http/http_connection_options.rb, line 40 def connect_proxy? @proxy && (@proxy[:type] == :http || @proxy[:type].nil?) && @https end
http_proxy?()
click to toggle source
# File lib/em-http/http_connection_options.rb, line 36 def http_proxy? @proxy && (@proxy[:type] == :http || @proxy[:type].nil?) && !@https end
proxy_from_env()
click to toggle source
# File lib/em-http/http_connection_options.rb, line 48 def proxy_from_env # TODO: Add support for $http_no_proxy or $no_proxy ? proxy_str = if @https ENV['HTTPS_PROXY'] || ENV['https_proxy'] else ENV['HTTP_PROXY'] || ENV['http_proxy'] # Fall-back to $ALL_PROXY if none of the above env-vars have values end || ENV['ALL_PROXY'] # Addressable::URI::parse will return `nil` if given `nil` and an empty URL for an empty string # so, let's short-circuit that: return if !proxy_str || proxy_str.empty? proxy_env_uri = Addressable::URI::parse(proxy_str) { :host => proxy_env_uri.host, :port => proxy_env_uri.port, :type => :http } rescue Addressable::URI::InvalidURIError # An invalid env-var shouldn't crash the config step, IMHO. # We should somehow log / warn about this, perhaps... return end
socks_proxy?()
click to toggle source
# File lib/em-http/http_connection_options.rb, line 44 def socks_proxy? @proxy && (@proxy[:type] == :socks5) end