class HTTPI::Adapter::HTTPClient
HTTPI::Adapter::HTTPClient
¶ ↑
Adapter
for the HTTPClient
client. rubygems.org/gems/httpclient
Attributes
client[R]
Public Class Methods
new(request)
click to toggle source
# File lib/httpi/adapter/httpclient.rb, line 15 def initialize(request) @request = request @client = ::HTTPClient.new end
Public Instance Methods
request(method)
click to toggle source
Executes arbitrary HTTP
requests. @see HTTPI.request
# File lib/httpi/adapter/httpclient.rb, line 24 def request(method) setup_client respond_with @client.request(method, @request.url, nil, @request.body, @request.headers, &@request.on_body) rescue OpenSSL::SSL::SSLError raise SSLError rescue Errno::ECONNREFUSED # connection refused $!.extend ConnectionError raise end
Private Instance Methods
basic_setup()
click to toggle source
# File lib/httpi/adapter/httpclient.rb, line 44 def basic_setup @client.proxy = @request.proxy if @request.proxy @client.connect_timeout = @request.open_timeout if @request.open_timeout @client.receive_timeout = @request.read_timeout if @request.read_timeout @client.send_timeout = @request.write_timeout if @request.write_timeout end
respond_with(response)
click to toggle source
# File lib/httpi/adapter/httpclient.rb, line 87 def respond_with(response) headers = {} response.header.all.each do |(header, value)| if headers.key?(header) headers[header] = Array(headers[header]) << value else headers[header] = value end end Response.new response.code, headers, response.content end
setup_auth()
click to toggle source
# File lib/httpi/adapter/httpclient.rb, line 51 def setup_auth @client.set_auth @request.url, *@request.auth.credentials end
setup_client()
click to toggle source
# File lib/httpi/adapter/httpclient.rb, line 36 def setup_client basic_setup setup_auth if @request.auth.http? setup_ntlm_auth if @request.auth.ntlm? setup_ssl_auth if @request.auth.ssl? || @request.ssl? end
setup_ntlm_auth()
click to toggle source
# File lib/httpi/adapter/httpclient.rb, line 55 def setup_ntlm_auth username, password, domain = @request.auth.credentials unless domain.nil? username = "#{domain.upcase}\\#{username}" end @client.set_auth @request.url, username, password end
setup_ssl_auth()
click to toggle source
# File lib/httpi/adapter/httpclient.rb, line 65 def setup_ssl_auth ssl = @request.auth.ssl if @request.auth.ssl? if ssl.ca_cert_file && ssl.verify_mode != :none @client.ssl_config.add_trust_ca(ssl.ca_cert_file) end # Send client-side certificate regardless of state of SSL verify mode @client.ssl_config.client_cert = ssl.cert @client.ssl_config.client_key = ssl.cert_key @client.ssl_config.ciphers = ssl.ciphers if ssl.ciphers @client.ssl_config.verify_mode = ssl.openssl_verify_mode end @client.ssl_config.ssl_version = ssl.ssl_version.to_s if ssl.ssl_version if ssl.min_version || ssl.max_version raise NotSupportedError, 'Httpclient adapter does not support #min_version or #max_version. Please, use #ssl_version instead' end end