httpi 2.0.2 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +42 -16
- data/Gemfile +12 -6
- data/README.md +19 -9
- data/httpi.gemspec +2 -1
- data/lib/httpi.rb +3 -0
- data/lib/httpi/adapter.rb +1 -1
- data/lib/httpi/adapter/curb.rb +11 -2
- data/lib/httpi/adapter/em_http.rb +21 -9
- data/lib/httpi/adapter/excon.rb +80 -0
- data/lib/httpi/adapter/httpclient.rb +13 -6
- data/lib/httpi/adapter/net_http.rb +88 -9
- data/lib/httpi/adapter/net_http_persistent.rb +43 -0
- data/lib/httpi/adapter/rack.rb +92 -0
- data/lib/httpi/auth/config.rb +6 -5
- data/lib/httpi/request.rb +9 -0
- data/lib/httpi/version.rb +1 -1
- data/spec/httpi/adapter/curb_spec.rb +17 -0
- data/spec/httpi/adapter/em_http_spec.rb +37 -27
- data/spec/httpi/adapter/excon_spec.rb +96 -0
- data/spec/httpi/adapter/httpclient_spec.rb +16 -8
- data/spec/httpi/adapter/net_http_persistent_spec.rb +96 -0
- data/spec/httpi/adapter/net_http_spec.rb +24 -151
- data/spec/httpi/adapter/rack_spec.rb +111 -0
- data/spec/httpi/auth/config_spec.rb +28 -0
- data/spec/httpi/httpi_spec.rb +17 -1
- data/spec/integration/curb_spec.rb +12 -0
- data/spec/integration/em_http_spec.rb +2 -0
- data/spec/integration/httpclient_spec.rb +32 -18
- data/spec/integration/net_http_persistent_spec.rb +139 -0
- data/spec/integration/net_http_spec.rb +59 -14
- data/spec/integration/support/application.rb +28 -0
- data/spec/spec_helper.rb +15 -6
- metadata +34 -32
- data/.rvmrc +0 -1
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c3d93398828eb1001de0ffda175e251a037fb4f4
|
4
|
+
data.tar.gz: 581d420ec8ca101e584d841a47e02e5e7fb5b58e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 37348af815f82aff80b024c08eb191b0ce4a2d9e6d05a5be22a8570dbe1c74683a37ff79e70d91cdc3c68fdabead56b7004871d261054f1fb2adb427b548ffb2
|
7
|
+
data.tar.gz: 2a41f0b5b86595280e23dbce2524d7badb438ec00e7fa1e11ea0b46c7bde52801cde382e9f49691a55cca260b55b2a255285e9af8d7ef778476ab289ecea8828
|
data/CHANGELOG.md
CHANGED
@@ -1,14 +1,40 @@
|
|
1
|
-
|
1
|
+
### 2.1.0 (2013-07-22)
|
2
|
+
|
3
|
+
* Feature: [#75](https://github.com/savonrb/httpi/pull/75) Rack adapter.
|
4
|
+
|
5
|
+
* Feature: [#91](https://github.com/savonrb/httpi/pull/91) New excon adapter.
|
6
|
+
|
7
|
+
* Feature: [#92](https://github.com/savonrb/httpi/pull/92) New net-http-persistent adapter.
|
8
|
+
|
9
|
+
* Feature: [#87](https://github.com/savonrb/httpi/pull/87) NTLM support with full domain and server authentication.
|
10
|
+
|
11
|
+
* Feature: [#71](https://github.com/savonrb/httpi/pull/71) chunked responses.
|
12
|
+
|
13
|
+
* Fix: [#81](https://github.com/savonrb/httpi/issues/81) send SSL client certificate
|
14
|
+
even when `:ssl_verify_mode` is set to `:none`.
|
15
|
+
|
16
|
+
* Fix: [#69](https://github.com/savonrb/httpi/issues/69) truncating response headers.
|
17
|
+
|
18
|
+
* Fix: [#88](https://github.com/savonrb/httpi/issues/88) timeout and proxy options
|
19
|
+
are now properly passed to the EM-HTTP-Request client.
|
20
|
+
|
21
|
+
* Fix: [#69](https://github.com/savonrb/httpi/issues/69) Fixes a problem where the response headers were truncated.
|
22
|
+
|
23
|
+
* Fix: [#90](https://github.com/savonrb/httpi/issues/90) we now raise an error if
|
24
|
+
you try to use Net::HTTP with HTTP digest authentication, because Net::HTTP does
|
25
|
+
not support digest authentication.
|
26
|
+
|
27
|
+
### 2.0.2 (2013-01-26)
|
2
28
|
|
3
29
|
* Feature: Changed `HTTPI::Request#set_cookies` to accept an Array of `HTTPI::Cookie`
|
4
30
|
objects as well as any object that responds to `cookies` (like an `HTTPI::Response`).
|
5
31
|
|
6
|
-
|
32
|
+
### 2.0.1 (2013-01-25)
|
7
33
|
|
8
34
|
* Fix: [#72](https://github.com/savonrb/httpi/pull/72) standardized response
|
9
35
|
headers from all adapters.
|
10
36
|
|
11
|
-
|
37
|
+
### 2.0.0 (2012-12-16)
|
12
38
|
|
13
39
|
* Feature: [#66](https://github.com/savonrb/httpi/pull/66) adds a `query` method
|
14
40
|
to the request.
|
@@ -16,7 +42,7 @@
|
|
16
42
|
* Fix: [#68](https://github.com/savonrb/httpi/issues/68) request does not yield
|
17
43
|
adapter client.
|
18
44
|
|
19
|
-
|
45
|
+
### 2.0.0.rc1 (2012-11-10)
|
20
46
|
|
21
47
|
* Feature: [#63](https://github.com/savonrb/httpi/pull/63) adds support for
|
22
48
|
EventMachine::HttpRequest. Additional information at [#40](https://github.com/savonrb/httpi/pull/40).
|
@@ -41,17 +67,17 @@
|
|
41
67
|
|
42
68
|
* Refactoring: Simplified the adapter interface.
|
43
69
|
|
44
|
-
|
70
|
+
### 1.1.1 (2012-07-01)
|
45
71
|
|
46
72
|
* Fix: [#56](https://github.com/savonrb/httpi/pull/56) ensures that the "Cookie"
|
47
73
|
header is not set to nil.
|
48
74
|
|
49
|
-
|
75
|
+
### 1.1.0 (2012-06-26)
|
50
76
|
|
51
77
|
* Refactoring: Moved code that sets the cookies from the last response for the
|
52
78
|
next request from Savon to `HTTPI::Request#set_cookies`.
|
53
79
|
|
54
|
-
|
80
|
+
### 1.0.0 (2012-06-07)
|
55
81
|
|
56
82
|
* Feature: [#48](https://github.com/savonrb/httpi/pull/48) @jheiss added support
|
57
83
|
for HTTP Negotiate/SPNEGO authentication (curb-specific).
|
@@ -59,7 +85,7 @@
|
|
59
85
|
* Fix: [#53](https://github.com/savonrb/httpi/issues/53) fixed an issue where
|
60
86
|
`HTTPI.log_level` did not do anything at all.
|
61
87
|
|
62
|
-
|
88
|
+
### 0.9.7 (2012-04-26)
|
63
89
|
|
64
90
|
* Fix: Merged [pull request 49](https://github.com/savonrb/httpi/pull/49) so that cert
|
65
91
|
and cert_key can be manually set.
|
@@ -67,7 +93,7 @@
|
|
67
93
|
* Fix: Stop auto-detecting gzipped responses by inspecting the response body to allow
|
68
94
|
response compression only.
|
69
95
|
|
70
|
-
|
96
|
+
### 0.9.6 (2012-02-23)
|
71
97
|
|
72
98
|
* Feature: Merged [pull request 46](https://github.com/savonrb/httpi/pull/46) to support
|
73
99
|
request body Hashes. Fixes [issue 45](https://github.com/savonrb/httpi/issues/45).
|
@@ -86,13 +112,13 @@
|
|
86
112
|
[issue 26](https://github.com/savonrb/httpi/issues/26) and probably also
|
87
113
|
[issue 32](https://github.com/savonrb/httpi/issues/32) - SSL client authentication.
|
88
114
|
|
89
|
-
|
115
|
+
### 0.9.5 (2011-06-30)
|
90
116
|
|
91
117
|
* Improvement: Moved support for NTLM authentication into a separate gem.
|
92
118
|
Since NTLM support caused quite some problems for people who didn't even
|
93
119
|
need it, I decided to move it into httpi-ntlm until it's stable.
|
94
120
|
|
95
|
-
|
121
|
+
### 0.9.4 (2011-05-15)
|
96
122
|
|
97
123
|
* Fix: issues [34](https://github.com/savonrb/httpi/issues/34) and
|
98
124
|
[29](https://github.com/savonrb/httpi/issues/29) - replaced the dependency
|
@@ -105,22 +131,22 @@
|
|
105
131
|
|
106
132
|
HTTPI.adapter = :net_http
|
107
133
|
|
108
|
-
|
134
|
+
### 0.9.3 (2011-04-28)
|
109
135
|
|
110
136
|
* Fix: [issue 31](https://github.com/savonrb/httpi/issues/31) missing headers when using httpclient.
|
111
137
|
|
112
138
|
* Fix: [issue 30](https://github.com/savonrb/httpi/issues/30) fix for using SSL with Net::HTTP.
|
113
139
|
|
114
|
-
|
140
|
+
### 0.9.2 (2011-04-05)
|
115
141
|
|
116
142
|
* Fix: issues [161](https://github.com/savonrb/savon/issues/161) and [165](https://github.com/savonrb/savon/issues/165)
|
117
143
|
reported at [savonrb/savon](https://github.com/savonrb/savon).
|
118
144
|
|
119
|
-
|
145
|
+
### 0.9.1 (2011-04-04)
|
120
146
|
|
121
147
|
* Fix: [issue 25](https://github.com/savonrb/httpi/issues/22) problem with HTTPI using the Net::HTTP adapter [hakanensari].
|
122
148
|
|
123
|
-
|
149
|
+
### 0.9.0 (2011-03-08)
|
124
150
|
|
125
151
|
* Feature: improved the adapter loading process ([d4a091](https://github.com/savonrb/httpi/commit/d4a091)) [rubiii].
|
126
152
|
|
@@ -138,7 +164,7 @@
|
|
138
164
|
|
139
165
|
* Fix: [issue 23](https://github.com/savonrb/httpi/issues/23) the HTTPI.log method now works as expected [rubiii].
|
140
166
|
|
141
|
-
|
167
|
+
### 0.8.0 (2011-03-07)
|
142
168
|
|
143
169
|
* Feature: added support for NTLM authentication ([96ceb1](https://github.com/savonrb/httpi/commit/96ceb1)) [MattHall].
|
144
170
|
|
data/Gemfile
CHANGED
@@ -1,10 +1,16 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
gemspec
|
3
3
|
|
4
|
-
gem
|
4
|
+
gem 'jruby-openssl', :platforms => :jruby
|
5
5
|
|
6
6
|
# http clients
|
7
|
-
gem
|
8
|
-
gem
|
9
|
-
gem 'em-http-request',
|
10
|
-
gem 'em-synchrony',
|
7
|
+
gem 'httpclient', '~> 2.3', :require => false
|
8
|
+
gem 'curb', '~> 0.8', :require => false, :platforms => :ruby
|
9
|
+
gem 'em-http-request', :require => false, :platforms => [:ruby, :jruby]
|
10
|
+
gem 'em-synchrony', :require => false, :platforms => [:ruby, :jruby]
|
11
|
+
gem 'excon', '~> 0.21.0', :require => false, :platforms => [:ruby, :jruby]
|
12
|
+
gem 'net-http-persistent', '~> 2.8', :require => false
|
13
|
+
|
14
|
+
# coverage
|
15
|
+
gem 'simplecov', :require => false
|
16
|
+
gem 'coveralls', :require => false
|
data/README.md
CHANGED
@@ -1,13 +1,17 @@
|
|
1
|
-
HTTPI
|
2
|
-
=====
|
1
|
+
# HTTPI
|
3
2
|
|
4
|
-
|
3
|
+
A common interface for Ruby's HTTP libraries.
|
5
4
|
|
6
5
|
[Documentation](http://httpirb.com) | [RDoc](http://rubydoc.info/gems/httpi) |
|
7
6
|
[Mailing list](https://groups.google.com/forum/#!forum/httpirb)
|
8
7
|
|
9
|
-
|
10
|
-
|
8
|
+
[![Build Status](https://secure.travis-ci.org/savonrb/httpi.png?branch=master)](http://travis-ci.org/savonrb/httpi)
|
9
|
+
[![Gem Version](https://badge.fury.io/rb/httpi.png)](http://badge.fury.io/rb/httpi)
|
10
|
+
[![Code Climate](https://codeclimate.com/github/savonrb/httpi.png)](https://codeclimate.com/github/savonrb/httpi)
|
11
|
+
[![Coverage Status](https://coveralls.io/repos/savonrb/httpi/badge.png?branch=master)](https://coveralls.io/r/savonrb/httpi)
|
12
|
+
|
13
|
+
|
14
|
+
## Installation
|
11
15
|
|
12
16
|
HTTPI is available through [Rubygems](http://rubygems.org/gems/httpi) and can be installed via:
|
13
17
|
|
@@ -15,9 +19,15 @@ HTTPI is available through [Rubygems](http://rubygems.org/gems/httpi) and can be
|
|
15
19
|
$ gem install httpi
|
16
20
|
```
|
17
21
|
|
22
|
+
or add it to your Gemfile like this:
|
23
|
+
|
24
|
+
```
|
25
|
+
gem 'httpi', '~> 2.1.0'
|
26
|
+
```
|
27
|
+
|
28
|
+
|
29
|
+
## Usage example
|
18
30
|
|
19
|
-
Introduction
|
20
|
-
------------
|
21
31
|
|
22
32
|
``` ruby
|
23
33
|
require "httpi"
|
@@ -39,7 +49,7 @@ HTTPI.adapter = :httpclient
|
|
39
49
|
HTTPI.request(:custom, request)
|
40
50
|
```
|
41
51
|
|
42
|
-
|
43
|
-
|
52
|
+
|
53
|
+
## Documentation
|
44
54
|
|
45
55
|
Continue reading at [httpirb.com](http://httpirb.com)
|
data/httpi.gemspec
CHANGED
@@ -15,11 +15,12 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.rubyforge_project = s.name
|
16
16
|
|
17
17
|
s.add_dependency "rack"
|
18
|
+
s.add_dependency "rubyntlm", "~> 0.3.2"
|
18
19
|
|
19
20
|
s.add_development_dependency "rake", "~> 10.0"
|
20
21
|
s.add_development_dependency "rspec", "~> 2.12"
|
21
22
|
s.add_development_dependency "mocha", "~> 0.13"
|
22
|
-
s.add_development_dependency "puma", "
|
23
|
+
s.add_development_dependency "puma", "~> 2.3.2"
|
23
24
|
|
24
25
|
s.files = `git ls-files`.split("\n")
|
25
26
|
s.require_path = "lib"
|
data/lib/httpi.rb
CHANGED
@@ -5,8 +5,11 @@ require "httpi/request"
|
|
5
5
|
|
6
6
|
require "httpi/adapter/httpclient"
|
7
7
|
require "httpi/adapter/curb"
|
8
|
+
require "httpi/adapter/excon"
|
8
9
|
require "httpi/adapter/net_http"
|
10
|
+
require "httpi/adapter/net_http_persistent"
|
9
11
|
require "httpi/adapter/em_http"
|
12
|
+
require "httpi/adapter/rack"
|
10
13
|
|
11
14
|
# = HTTPI
|
12
15
|
#
|
data/lib/httpi/adapter.rb
CHANGED
data/lib/httpi/adapter/curb.rb
CHANGED
@@ -29,6 +29,8 @@ module HTTPI
|
|
29
29
|
arguments << (@request.body || "")
|
30
30
|
end
|
31
31
|
|
32
|
+
client.on_body(&@request.on_body) if @request.on_body
|
33
|
+
|
32
34
|
do_request { |client| client.send(*arguments) }
|
33
35
|
rescue Curl::Err::SSLCACertificateError
|
34
36
|
raise SSLError
|
@@ -49,6 +51,11 @@ module HTTPI
|
|
49
51
|
|
50
52
|
def setup_client
|
51
53
|
basic_setup
|
54
|
+
|
55
|
+
if @request.auth.ntlm?
|
56
|
+
raise NotSupportedError, "curb does not support NTLM authentication"
|
57
|
+
end
|
58
|
+
|
52
59
|
setup_http_auth if @request.auth.http?
|
53
60
|
setup_gssnegotiate_auth if @request.auth.gssnegotiate?
|
54
61
|
setup_ssl_auth if @request.auth.ssl?
|
@@ -80,12 +87,14 @@ module HTTPI
|
|
80
87
|
ssl = @request.auth.ssl
|
81
88
|
|
82
89
|
unless ssl.verify_mode == :none
|
83
|
-
@client.cert_key = ssl.cert_key_file
|
84
|
-
@client.cert = ssl.cert_file
|
85
90
|
@client.cacert = ssl.ca_cert_file if ssl.ca_cert_file
|
86
91
|
@client.certtype = ssl.cert_type.to_s.upcase
|
87
92
|
end
|
88
93
|
|
94
|
+
# Send client-side certificate regardless of state of SSL verify mode
|
95
|
+
@client.cert_key = ssl.cert_key_file
|
96
|
+
@client.cert = ssl.cert_file
|
97
|
+
|
89
98
|
@client.ssl_verify_peer = ssl.verify_mode == :peer
|
90
99
|
@client.ssl_version = case ssl.ssl_version
|
91
100
|
when :TLSv1 then 1
|
@@ -33,7 +33,7 @@ module HTTPI
|
|
33
33
|
|
34
34
|
def initialize(request)
|
35
35
|
@request = request
|
36
|
-
@client = EventMachine::HttpRequest.new build_request_url(request.url)
|
36
|
+
@client = EventMachine::HttpRequest.new build_request_url(request.url), connection_options
|
37
37
|
end
|
38
38
|
|
39
39
|
attr_reader :client
|
@@ -54,29 +54,41 @@ module HTTPI
|
|
54
54
|
|
55
55
|
def _request
|
56
56
|
options = client_options
|
57
|
-
setup_proxy(options) if @request.proxy
|
58
57
|
setup_http_auth(options) if @request.auth.http?
|
59
58
|
|
60
59
|
if @request.auth.ssl?
|
61
60
|
raise NotSupportedError, "EM-HTTP-Request does not support SSL client auth"
|
62
61
|
end
|
63
62
|
|
63
|
+
if @request.on_body
|
64
|
+
raise NotSupportedError, "EM-HTTP-Request does not support response streaming"
|
65
|
+
end
|
66
|
+
|
64
67
|
start_time = Time.now
|
65
68
|
respond_with yield(options), start_time
|
66
69
|
end
|
67
70
|
|
71
|
+
def connection_options
|
72
|
+
options = {
|
73
|
+
:connect_timeout => @request.open_timeout,
|
74
|
+
:inactivity_timeout => @request.read_timeout
|
75
|
+
}
|
76
|
+
|
77
|
+
options[:proxy] = proxy_options if @request.proxy
|
78
|
+
|
79
|
+
options
|
80
|
+
end
|
81
|
+
|
68
82
|
def client_options
|
69
83
|
{
|
70
|
-
:query
|
71
|
-
:
|
72
|
-
:
|
73
|
-
:head => @request.headers.to_hash,
|
74
|
-
:body => @request.body
|
84
|
+
:query => @request.url.query,
|
85
|
+
:head => @request.headers.to_hash,
|
86
|
+
:body => @request.body
|
75
87
|
}
|
76
88
|
end
|
77
89
|
|
78
|
-
def
|
79
|
-
|
90
|
+
def proxy_options
|
91
|
+
{
|
80
92
|
:host => @request.proxy.host,
|
81
93
|
:port => @request.proxy.port,
|
82
94
|
:authorization => [@request.proxy.user, @request.proxy.password]
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require "httpi/adapter/base"
|
2
|
+
require "httpi/response"
|
3
|
+
|
4
|
+
module HTTPI
|
5
|
+
module Adapter
|
6
|
+
|
7
|
+
# = HTTPI::Adapter::Excon
|
8
|
+
#
|
9
|
+
# Adapter for the Excon client.
|
10
|
+
# https://github.com/geemus/excon
|
11
|
+
class Excon < Base
|
12
|
+
|
13
|
+
register :excon, :deps => %w(excon)
|
14
|
+
|
15
|
+
def initialize(request)
|
16
|
+
@request = request
|
17
|
+
@client = ::Excon::Connection.new client_opts
|
18
|
+
end
|
19
|
+
|
20
|
+
attr_reader :client
|
21
|
+
|
22
|
+
# Executes arbitrary HTTP requests.
|
23
|
+
# @see HTTPI.request
|
24
|
+
def request(method)
|
25
|
+
respond_with @client.send(method)
|
26
|
+
rescue ::Excon::Errors::SocketError => e
|
27
|
+
case e.message
|
28
|
+
when /verify certificate/
|
29
|
+
raise SSLError
|
30
|
+
else
|
31
|
+
$!.extend ConnectionError
|
32
|
+
end
|
33
|
+
raise
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def client_opts
|
39
|
+
url = @request.url
|
40
|
+
ssl = @request.auth.ssl
|
41
|
+
|
42
|
+
opts = {
|
43
|
+
:host => url.host,
|
44
|
+
:path => url.path,
|
45
|
+
:port => url.port.to_s,
|
46
|
+
:query => url.query,
|
47
|
+
:scheme => url.scheme,
|
48
|
+
:headers => @request.headers,
|
49
|
+
:body => @request.body
|
50
|
+
}
|
51
|
+
|
52
|
+
if @request.auth.digest?
|
53
|
+
raise NotSupportedError, "excon does not support HTTP digest authentication"
|
54
|
+
elsif @request.auth.ntlm?
|
55
|
+
raise NotSupportedError, "excon does not support NTLM authentication"
|
56
|
+
end
|
57
|
+
|
58
|
+
opts[:user], opts[:password] = *@request.auth.credentials if @request.auth.basic?
|
59
|
+
opts[:connect_timeout] = @request.open_timeout if @request.open_timeout
|
60
|
+
opts[:read_timeout] = @request.read_timeout if @request.read_timeout
|
61
|
+
opts[:response_block] = @request.on_body if @request.on_body
|
62
|
+
opts[:proxy] = @request.proxy if @request.proxy
|
63
|
+
|
64
|
+
if ssl.verify_mode == :peer
|
65
|
+
opts[:ssl_verify_peer] = true
|
66
|
+
opts[:ssl_ca_file] = ssl.ca_cert_file if ssl.ca_cert_file
|
67
|
+
opts[:client_cert] = ssl.cert if ssl.cert
|
68
|
+
opts[:client_key] = ssl.cert_key if ssl.cert_key
|
69
|
+
end
|
70
|
+
|
71
|
+
opts
|
72
|
+
end
|
73
|
+
|
74
|
+
def respond_with(response)
|
75
|
+
Response.new response.status, response.headers, response.body
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -23,7 +23,7 @@ module HTTPI
|
|
23
23
|
# @see HTTPI.request
|
24
24
|
def request(method)
|
25
25
|
setup_client
|
26
|
-
respond_with @client.request(method, @request.url, nil, @request.body, @request.headers)
|
26
|
+
respond_with @client.request(method, @request.url, nil, @request.body, @request.headers, &@request.on_body)
|
27
27
|
rescue OpenSSL::SSL::SSLError
|
28
28
|
raise SSLError
|
29
29
|
rescue Errno::ECONNREFUSED # connection refused
|
@@ -35,6 +35,11 @@ module HTTPI
|
|
35
35
|
|
36
36
|
def setup_client
|
37
37
|
basic_setup
|
38
|
+
|
39
|
+
if @request.auth.ntlm?
|
40
|
+
raise NotSupportedError, "HTTPClient adapter does not support NTLM authentication"
|
41
|
+
end
|
42
|
+
|
38
43
|
setup_auth if @request.auth.http?
|
39
44
|
setup_ssl_auth if @request.auth.ssl?
|
40
45
|
end
|
@@ -52,14 +57,16 @@ module HTTPI
|
|
52
57
|
def setup_ssl_auth
|
53
58
|
ssl = @request.auth.ssl
|
54
59
|
|
55
|
-
|
56
|
-
@client.ssl_config.
|
57
|
-
@client.ssl_config.client_key = ssl.cert_key
|
58
|
-
@client.ssl_config.add_trust_ca(ssl.ca_cert_file) if ssl.ca_cert_file
|
60
|
+
if ssl.ca_cert_file && ssl.verify_mode != :none
|
61
|
+
@client.ssl_config.add_trust_ca(ssl.ca_cert_file)
|
59
62
|
end
|
60
63
|
|
64
|
+
# Send client-side certificate regardless of state of SSL verify mode
|
65
|
+
@client.ssl_config.client_cert = ssl.cert
|
66
|
+
@client.ssl_config.client_key = ssl.cert_key
|
67
|
+
|
61
68
|
@client.ssl_config.verify_mode = ssl.openssl_verify_mode
|
62
|
-
@client.ssl_config.ssl_version = ssl.ssl_version if ssl.ssl_version
|
69
|
+
@client.ssl_config.ssl_version = ssl.ssl_version.to_s if ssl.ssl_version
|
63
70
|
end
|
64
71
|
|
65
72
|
def respond_with(response)
|