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)|