lib/httpi/adapter/httpclient.rb in httpi-2.0.2 vs lib/httpi/adapter/httpclient.rb in httpi-2.1.0

- old
+ new

@@ -21,11 +21,11 @@ # Executes arbitrary HTTP requests. # @see HTTPI.request def request(method) setup_client - respond_with @client.request(method, @request.url, nil, @request.body, @request.headers) + 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 @@ -33,10 +33,15 @@ private def setup_client basic_setup + + if @request.auth.ntlm? + raise NotSupportedError, "HTTPClient adapter does not support NTLM authentication" + end + setup_auth if @request.auth.http? setup_ssl_auth if @request.auth.ssl? end def basic_setup @@ -50,17 +55,19 @@ end def setup_ssl_auth ssl = @request.auth.ssl - unless ssl.verify_mode == :none - @client.ssl_config.client_cert = ssl.cert - @client.ssl_config.client_key = ssl.cert_key - @client.ssl_config.add_trust_ca(ssl.ca_cert_file) if ssl.ca_cert_file + 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.verify_mode = ssl.openssl_verify_mode - @client.ssl_config.ssl_version = ssl.ssl_version if ssl.ssl_version + @client.ssl_config.ssl_version = ssl.ssl_version.to_s if ssl.ssl_version end def respond_with(response) headers = {} response.header.all.each do |(header, value)|