httpclient 2.6.0.1 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/bin/httpclient +5 -1
- data/lib/http-access2.rb +1 -1
- data/lib/httpclient.rb +37 -5
- data/lib/httpclient/auth.rb +3 -3
- data/lib/httpclient/cacert.pem +3952 -0
- data/lib/httpclient/{cacert.p7s → cacert1024.pem} +0 -0
- data/lib/httpclient/connection.rb +1 -1
- data/lib/httpclient/cookie.rb +12 -4
- data/lib/httpclient/http.rb +1 -1
- data/lib/httpclient/jruby_ssl_socket.rb +526 -0
- data/lib/httpclient/session.rb +161 -244
- data/lib/httpclient/ssl_config.rb +54 -17
- data/lib/httpclient/ssl_socket.rb +149 -0
- data/lib/httpclient/timeout.rb +1 -1
- data/lib/httpclient/util.rb +23 -1
- data/lib/httpclient/version.rb +1 -1
- data/lib/oauthclient.rb +1 -1
- data/test/{ca-chain.cert → ca-chain.pem} +0 -0
- data/test/helper.rb +7 -5
- data/test/test_auth.rb +27 -8
- data/test/test_cookie.rb +2 -2
- data/test/test_httpclient.rb +57 -21
- data/test/test_ssl.rb +70 -21
- data/test/test_webagent-cookie.rb +2 -2
- metadata +13 -10
data/test/test_cookie.rb
CHANGED
@@ -290,8 +290,8 @@ EOF
|
|
290
290
|
def test_load_cookies_escaped
|
291
291
|
uri = urify('http://example.org/')
|
292
292
|
f = Tempfile.new('test_cookie')
|
293
|
-
File.open(f.path, 'w') do |
|
294
|
-
|
293
|
+
File.open(f.path, 'w') do |out|
|
294
|
+
out.write <<EOF
|
295
295
|
http://example.org/ key1 "value" 0 .example.org / 13 0
|
296
296
|
http://example.org/ key2 "" 0 .example.org / 13 0
|
297
297
|
http://example.org/ key3 0 .example.org / 13 0
|
data/test/test_httpclient.rb
CHANGED
@@ -568,7 +568,7 @@ EOS
|
|
568
568
|
end
|
569
569
|
|
570
570
|
def test_get_content_with_base_url
|
571
|
-
@client = HTTPClient.new(:base_url => serverurl
|
571
|
+
@client = HTTPClient.new(:base_url => serverurl)
|
572
572
|
assert_equal('hello', @client.get_content('/hello'))
|
573
573
|
assert_equal('hello', @client.get_content('/redirect1'))
|
574
574
|
assert_equal('hello', @client.get_content('/redirect2'))
|
@@ -591,8 +591,10 @@ EOS
|
|
591
591
|
|
592
592
|
GZIP_CONTENT = "\x1f\x8b\x08\x00\x1a\x96\xe0\x4c\x00\x03\xcb\x48\xcd\xc9\xc9\x07\x00\x86\xa6\x10\x36\x05\x00\x00\x00"
|
593
593
|
DEFLATE_CONTENT = "\x78\x9c\xcb\x48\xcd\xc9\xc9\x07\x00\x06\x2c\x02\x15"
|
594
|
-
|
595
|
-
DEFLATE_CONTENT.
|
594
|
+
DEFLATE_NOHEADER_CONTENT = "x\x9C\xCBH\xCD\xC9\xC9\a\x00\x06,\x02\x15"
|
595
|
+
[GZIP_CONTENT, DEFLATE_CONTENT, DEFLATE_NOHEADER_CONTENT].each do |content|
|
596
|
+
content.force_encoding('BINARY') if content.respond_to?(:force_encoding)
|
597
|
+
end
|
596
598
|
def test_get_gzipped_content
|
597
599
|
@client.transparent_gzip_decompression = false
|
598
600
|
content = @client.get_content(serverurl + 'compressed?enc=gzip')
|
@@ -601,6 +603,7 @@ EOS
|
|
601
603
|
@client.transparent_gzip_decompression = true
|
602
604
|
assert_equal('hello', @client.get_content(serverurl + 'compressed?enc=gzip'))
|
603
605
|
assert_equal('hello', @client.get_content(serverurl + 'compressed?enc=deflate'))
|
606
|
+
assert_equal('hello', @client.get_content(serverurl + 'compressed?enc=deflate_noheader'))
|
604
607
|
@client.transparent_gzip_decompression = false
|
605
608
|
end
|
606
609
|
|
@@ -676,14 +679,14 @@ EOS
|
|
676
679
|
end
|
677
680
|
|
678
681
|
def test_get_with_base_url
|
679
|
-
@client = HTTPClient.new(:base_url => serverurl
|
682
|
+
@client = HTTPClient.new(:base_url => serverurl)
|
680
683
|
assert_equal("get", @client.get('/servlet').content)
|
681
684
|
param = {'1'=>'2', '3'=>'4'}
|
682
685
|
res = @client.get('/servlet', param)
|
683
686
|
assert_equal(param, params(res.header["x-query"][0]))
|
684
687
|
assert_nil(res.contenttype)
|
685
688
|
#
|
686
|
-
@client.base_url = serverurl[0
|
689
|
+
@client.base_url = serverurl[0...-1] + '/servlet'
|
687
690
|
url = '?5=6&7=8'
|
688
691
|
res = @client.get(url, param)
|
689
692
|
assert_equal(param.merge("5"=>"6", "7"=>"8"), params(res.header["x-query"][0]))
|
@@ -691,7 +694,7 @@ EOS
|
|
691
694
|
end
|
692
695
|
|
693
696
|
def test_get_with_default_header
|
694
|
-
@client = HTTPClient.new(:base_url => serverurl
|
697
|
+
@client = HTTPClient.new(:base_url => serverurl, :default_header => {'x-header' => 'custom'})
|
695
698
|
assert_equal('custom', @client.get('/servlet').headers['X-Header'])
|
696
699
|
@client.default_header = {'x-header' => 'custom2'}
|
697
700
|
assert_equal('custom2', @client.get('/servlet').headers['X-Header'])
|
@@ -767,8 +770,8 @@ EOS
|
|
767
770
|
|
768
771
|
def test_get_with_block_arity_2
|
769
772
|
called = false
|
770
|
-
res = @client.get(serverurl + 'servlet') { |
|
771
|
-
assert_equal(200,
|
773
|
+
res = @client.get(serverurl + 'servlet') { |blk_res, str|
|
774
|
+
assert_equal(200, blk_res.status)
|
772
775
|
assert_equal('get', str)
|
773
776
|
called = true
|
774
777
|
}
|
@@ -780,7 +783,7 @@ EOS
|
|
780
783
|
def test_get_with_block_string_recycle
|
781
784
|
@client.read_block_size = 2
|
782
785
|
body = []
|
783
|
-
|
786
|
+
_res = @client.get(serverurl + 'servlet') { |str|
|
784
787
|
body << str
|
785
788
|
}
|
786
789
|
assert_equal(2, body.size)
|
@@ -797,7 +800,7 @@ EOS
|
|
797
800
|
url = "http://localhost:#{server.addr[1]}/"
|
798
801
|
body = []
|
799
802
|
begin
|
800
|
-
|
803
|
+
_res = @client.get(url + 'chunked') { |str|
|
801
804
|
body << str
|
802
805
|
}
|
803
806
|
ensure
|
@@ -952,7 +955,7 @@ EOS
|
|
952
955
|
1
|
953
956
|
end
|
954
957
|
@client.debug_dev = str = StringIO.new
|
955
|
-
|
958
|
+
_res = @client.post(serverurl + 'servlet', { :file => myio })
|
956
959
|
assert_match(/\r\n4\r\n/, str.string, 'should send "4" not "45"')
|
957
960
|
end
|
958
961
|
|
@@ -969,7 +972,7 @@ EOS
|
|
969
972
|
end
|
970
973
|
end
|
971
974
|
@client.debug_dev = str = StringIO.new
|
972
|
-
|
975
|
+
_res = @client.post(serverurl + 'servlet', { :file1 => myio1, :file2 => myio2 })
|
973
976
|
assert_match(/\r\n45\r\n/, str.string)
|
974
977
|
end
|
975
978
|
|
@@ -1032,6 +1035,36 @@ EOS
|
|
1032
1035
|
end
|
1033
1036
|
end
|
1034
1037
|
|
1038
|
+
def test_patch
|
1039
|
+
assert_equal("patch", @client.patch(serverurl + 'servlet', '').content)
|
1040
|
+
param = {'1'=>'2', '3'=>'4'}
|
1041
|
+
@client.debug_dev = str = ''
|
1042
|
+
res = @client.patch(serverurl + 'servlet', param)
|
1043
|
+
assert_equal(param, params(res.header["x-query"][0]))
|
1044
|
+
assert_equal('Content-Type: application/x-www-form-urlencoded', str.split(/\r?\n/)[5])
|
1045
|
+
end
|
1046
|
+
|
1047
|
+
def test_patch_with_query_and_body
|
1048
|
+
res = @client.patch(serverurl + 'servlet', :query => {:query => 'query'}, :body => {:body => 'body'})
|
1049
|
+
assert_equal("patch", res.content)
|
1050
|
+
assert_equal("body=body", res.headers["X-Query"])
|
1051
|
+
assert_equal("query=query", res.headers["X-Request-Query"])
|
1052
|
+
end
|
1053
|
+
|
1054
|
+
def test_patch_bytesize
|
1055
|
+
res = @client.patch(serverurl + 'servlet', 'txt' => 'あいうえお')
|
1056
|
+
assert_equal('txt=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A', res.header["x-query"][0])
|
1057
|
+
assert_equal('15', res.header["x-size"][0])
|
1058
|
+
end
|
1059
|
+
|
1060
|
+
def test_patch_async
|
1061
|
+
param = {'1'=>'2', '3'=>'4'}
|
1062
|
+
conn = @client.patch_async(serverurl + 'servlet', param)
|
1063
|
+
Thread.pass while !conn.finished?
|
1064
|
+
res = conn.pop
|
1065
|
+
assert_equal(param, params(res.header["x-query"][0]))
|
1066
|
+
end
|
1067
|
+
|
1035
1068
|
def test_put
|
1036
1069
|
assert_equal("put", @client.put(serverurl + 'servlet', '').content)
|
1037
1070
|
param = {'1'=>'2', '3'=>'4'}
|
@@ -1240,7 +1273,7 @@ EOS
|
|
1240
1273
|
|
1241
1274
|
def test_http_custom_date_header
|
1242
1275
|
@client.debug_dev = (str = "")
|
1243
|
-
|
1276
|
+
_res = @client.get(serverurl + 'hello', :header => {'Date' => 'foo'})
|
1244
1277
|
lines = str.split(/(?:\r?\n)+/)
|
1245
1278
|
assert_equal('Date: foo', lines[4])
|
1246
1279
|
end
|
@@ -1840,14 +1873,6 @@ private
|
|
1840
1873
|
@server_thread = start_server_thread(@server)
|
1841
1874
|
end
|
1842
1875
|
|
1843
|
-
def escape_noproxy
|
1844
|
-
backup = HTTPClient::NO_PROXY_HOSTS.dup
|
1845
|
-
HTTPClient::NO_PROXY_HOSTS.clear
|
1846
|
-
yield
|
1847
|
-
ensure
|
1848
|
-
HTTPClient::NO_PROXY_HOSTS.replace(backup)
|
1849
|
-
end
|
1850
|
-
|
1851
1876
|
def add_query_string(req)
|
1852
1877
|
if req.query_string
|
1853
1878
|
'?' + req.query_string
|
@@ -1922,6 +1947,9 @@ private
|
|
1922
1947
|
elsif req.query['enc'] == 'deflate'
|
1923
1948
|
res['content-encoding'] = 'deflate'
|
1924
1949
|
res.body = DEFLATE_CONTENT
|
1950
|
+
elsif req.query['enc'] == 'deflate_noheader'
|
1951
|
+
res['content-encoding'] = 'deflate'
|
1952
|
+
res.body = DEFLATE_NOHEADER_CONTENT
|
1925
1953
|
end
|
1926
1954
|
end
|
1927
1955
|
|
@@ -1966,6 +1994,14 @@ private
|
|
1966
1994
|
res["x-request-query"] = req.query_string
|
1967
1995
|
end
|
1968
1996
|
|
1997
|
+
def do_PATCH(req, res)
|
1998
|
+
res["x-query"] = body_response(req)
|
1999
|
+
param = WEBrick::HTTPUtils.parse_query(req.body) || {}
|
2000
|
+
res["x-size"] = (param['txt'] || '').size
|
2001
|
+
res.body = param['txt'] || 'patch'
|
2002
|
+
res["x-request-query"] = req.query_string
|
2003
|
+
end
|
2004
|
+
|
1969
2005
|
def do_PUT(req, res)
|
1970
2006
|
res["x-query"] = body_response(req)
|
1971
2007
|
param = WEBrick::HTTPUtils.parse_query(req.body) || {}
|
data/test/test_ssl.rb
CHANGED
@@ -4,6 +4,7 @@ require 'webrick/https'
|
|
4
4
|
|
5
5
|
class TestSSL < Test::Unit::TestCase
|
6
6
|
include Helper
|
7
|
+
|
7
8
|
DIR = File.dirname(File.expand_path(__FILE__))
|
8
9
|
|
9
10
|
def setup
|
@@ -25,6 +26,20 @@ class TestSSL < Test::Unit::TestCase
|
|
25
26
|
File.expand_path(filename, DIR)
|
26
27
|
end
|
27
28
|
|
29
|
+
def test_proxy_ssl
|
30
|
+
setup_proxyserver
|
31
|
+
escape_noproxy do
|
32
|
+
@client.proxy = proxyurl
|
33
|
+
@client.ssl_config.set_client_cert_file(path('client.cert'), path('client.key'))
|
34
|
+
@client.ssl_config.add_trust_ca(path('ca.cert'))
|
35
|
+
@client.ssl_config.add_trust_ca(path('subca.cert'))
|
36
|
+
@client.debug_dev = str = ""
|
37
|
+
assert_equal(200, @client.get(@url).status)
|
38
|
+
assert(/accept/ =~ @proxyio.string, 'proxy is not used')
|
39
|
+
assert(/Host: localhost:#{serverport}/ =~ str)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
28
43
|
def test_options
|
29
44
|
cfg = @client.ssl_config
|
30
45
|
assert_nil(cfg.client_cert)
|
@@ -41,6 +56,8 @@ class TestSSL < Test::Unit::TestCase
|
|
41
56
|
assert_instance_of(OpenSSL::X509::Store, cfg.cert_store)
|
42
57
|
end
|
43
58
|
|
59
|
+
unless defined?(HTTPClient::JRubySSLSocket)
|
60
|
+
# JRubySSLSocket does not support sync mode.
|
44
61
|
def test_sync
|
45
62
|
cfg = @client.ssl_config
|
46
63
|
cfg.set_client_cert_file(path('client.cert'), path('client.key'))
|
@@ -52,12 +69,13 @@ class TestSSL < Test::Unit::TestCase
|
|
52
69
|
@client.reset_all
|
53
70
|
assert_equal("hello", @client.get_content(@url))
|
54
71
|
end
|
72
|
+
end
|
55
73
|
|
56
74
|
def test_debug_dev
|
57
75
|
str = @client.debug_dev = ''
|
58
76
|
cfg = @client.ssl_config
|
59
|
-
cfg.client_cert =
|
60
|
-
cfg.client_key =
|
77
|
+
cfg.client_cert = path("client.cert")
|
78
|
+
cfg.client_key = path("client.key")
|
61
79
|
cfg.add_trust_ca(path('ca.cert'))
|
62
80
|
cfg.add_trust_ca(path('subca.cert'))
|
63
81
|
assert_equal("hello", @client.get_content(@url))
|
@@ -72,18 +90,18 @@ class TestSSL < Test::Unit::TestCase
|
|
72
90
|
@client.get(@url)
|
73
91
|
assert(false)
|
74
92
|
rescue OpenSSL::SSL::SSLError => ssle
|
75
|
-
assert_match(/certificate verify failed/, ssle.message)
|
93
|
+
assert_match(/(certificate verify failed|unable to find valid certification path to requested target)/, ssle.message)
|
76
94
|
assert(@verify_callback_called)
|
77
95
|
end
|
78
96
|
#
|
79
|
-
cfg.client_cert =
|
80
|
-
cfg.client_key =
|
97
|
+
cfg.client_cert = path("client.cert")
|
98
|
+
cfg.client_key = path("client.key")
|
81
99
|
@verify_callback_called = false
|
82
100
|
begin
|
83
101
|
@client.get(@url)
|
84
102
|
assert(false)
|
85
103
|
rescue OpenSSL::SSL::SSLError => ssle
|
86
|
-
assert_match(/certificate verify failed/, ssle.message)
|
104
|
+
assert_match(/(certificate verify failed|unable to find valid certification path to requested target)/, ssle.message)
|
87
105
|
assert(@verify_callback_called)
|
88
106
|
end
|
89
107
|
#
|
@@ -93,7 +111,7 @@ class TestSSL < Test::Unit::TestCase
|
|
93
111
|
@client.get(@url)
|
94
112
|
assert(false)
|
95
113
|
rescue OpenSSL::SSL::SSLError => ssle
|
96
|
-
assert_match(/certificate verify failed/, ssle.message)
|
114
|
+
assert_match(/(certificate verify failed|unable to find valid certification path to requested target)/, ssle.message)
|
97
115
|
assert(@verify_callback_called)
|
98
116
|
end
|
99
117
|
#
|
@@ -102,16 +120,16 @@ class TestSSL < Test::Unit::TestCase
|
|
102
120
|
assert_equal("hello", @client.get_content(@url))
|
103
121
|
assert(@verify_callback_called)
|
104
122
|
#
|
105
|
-
|
106
|
-
#
|
107
|
-
#
|
123
|
+
if false
|
124
|
+
# JRubySSLSocket does not support depth.
|
125
|
+
# Also on travis environment, verify_depth seems to not work properly.
|
108
126
|
cfg.verify_depth = 1 # 2 required: root-sub
|
109
127
|
@verify_callback_called = false
|
110
128
|
begin
|
111
129
|
@client.get(@url)
|
112
130
|
assert(false, "verify_depth is not supported? #{OpenSSL::OPENSSL_VERSION}")
|
113
131
|
rescue OpenSSL::SSL::SSLError => ssle
|
114
|
-
assert_match(/certificate verify failed/, ssle.message)
|
132
|
+
assert_match(/(certificate verify failed|unable to find valid certification path to requested target)/, ssle.message)
|
115
133
|
assert(@verify_callback_called)
|
116
134
|
end
|
117
135
|
#
|
@@ -128,13 +146,39 @@ end
|
|
128
146
|
@client.get_content(@url)
|
129
147
|
assert(false)
|
130
148
|
rescue OpenSSL::SSL::SSLError => ssle
|
131
|
-
assert_match(/certificate verify failed/, ssle.message)
|
149
|
+
assert_match(/(certificate verify failed|unable to find valid certification path to requested target)/, ssle.message)
|
132
150
|
end
|
133
151
|
#
|
134
152
|
cfg.verify_mode = nil
|
135
153
|
assert_equal("hello", @client.get_content(@url))
|
136
154
|
end
|
137
155
|
|
156
|
+
if defined?(HTTPClient::JRubySSLSocket)
|
157
|
+
def test_ciphers
|
158
|
+
cfg = @client.ssl_config
|
159
|
+
cfg.set_client_cert_file(path('client.cert'), path('client-pass.key'), 'pass4key')
|
160
|
+
cfg.add_trust_ca(path('ca.cert'))
|
161
|
+
cfg.add_trust_ca(path('subca.cert'))
|
162
|
+
cfg.timeout = 123
|
163
|
+
assert_equal("hello", @client.get_content(@url))
|
164
|
+
#
|
165
|
+
cfg.ciphers = []
|
166
|
+
begin
|
167
|
+
@client.get(@url)
|
168
|
+
assert(false)
|
169
|
+
rescue OpenSSL::SSL::SSLError => ssle
|
170
|
+
assert_match(/No appropriate protocol/, ssle.message)
|
171
|
+
end
|
172
|
+
#
|
173
|
+
cfg.ciphers = %w(TLS_RSA_WITH_AES_128_CBC_SHA)
|
174
|
+
assert_equal("hello", @client.get_content(@url))
|
175
|
+
#
|
176
|
+
cfg.ciphers = HTTPClient::SSLConfig::CIPHERS_DEFAULT
|
177
|
+
assert_equal("hello", @client.get_content(@url))
|
178
|
+
end
|
179
|
+
|
180
|
+
else
|
181
|
+
|
138
182
|
def test_ciphers
|
139
183
|
cfg = @client.ssl_config
|
140
184
|
cfg.set_client_cert_file(path('client.cert'), path('client-pass.key'), 'pass4key')
|
@@ -157,15 +201,20 @@ end
|
|
157
201
|
cfg.ciphers = "DEFAULT"
|
158
202
|
assert_equal("hello", @client.get_content(@url))
|
159
203
|
end
|
204
|
+
end
|
160
205
|
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
206
|
+
# SSL_CERT_FILE does not work with recent jruby-openssl.
|
207
|
+
# You should not depend on SSL_CERT_FILE on JRuby
|
208
|
+
if !defined?(JRUBY_VERSION)
|
209
|
+
def test_set_default_paths
|
210
|
+
assert_raise(OpenSSL::SSL::SSLError) do
|
211
|
+
@client.get(@url)
|
212
|
+
end
|
213
|
+
escape_env do
|
214
|
+
ENV['SSL_CERT_FILE'] = File.join(DIR, 'ca-chain.pem')
|
215
|
+
@client.ssl_config.set_default_paths
|
216
|
+
@client.get(@url)
|
217
|
+
end
|
169
218
|
end
|
170
219
|
end
|
171
220
|
|
@@ -180,7 +229,7 @@ end
|
|
180
229
|
|
181
230
|
def test_allow_tlsv1
|
182
231
|
teardown_server
|
183
|
-
|
232
|
+
setup_server_with_ssl_version(:TLSv1)
|
184
233
|
assert_nothing_raised do
|
185
234
|
@client.ssl_config.verify_mode = nil
|
186
235
|
@client.get("https://localhost:#{serverport}/hello")
|
@@ -440,8 +440,8 @@ EOF
|
|
440
440
|
def test_load_cookies_escaped
|
441
441
|
uri = urify('http://example.org/')
|
442
442
|
f = Tempfile.new('test_cookie')
|
443
|
-
File.open(f.path, 'w') do |
|
444
|
-
|
443
|
+
File.open(f.path, 'w') do |out|
|
444
|
+
out.write <<EOF
|
445
445
|
http://example.org/ key "value" 0 .example.org / 13 0
|
446
446
|
http://example.org/ key "" .example.org / 13 0
|
447
447
|
http://example.org/ key .example.org / 13 0
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: httpclient
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiroshi Nakamura
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email: nahi@ruby-lang.org
|
@@ -17,25 +17,29 @@ executables:
|
|
17
17
|
extensions: []
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
|
+
- README.md
|
20
21
|
- bin/httpclient
|
21
22
|
- bin/jsonclient
|
22
23
|
- lib/hexdump.rb
|
24
|
+
- lib/http-access2.rb
|
23
25
|
- lib/http-access2/cookie.rb
|
24
26
|
- lib/http-access2/http.rb
|
25
|
-
- lib/
|
27
|
+
- lib/httpclient.rb
|
26
28
|
- lib/httpclient/auth.rb
|
27
|
-
- lib/httpclient/cacert.
|
29
|
+
- lib/httpclient/cacert.pem
|
30
|
+
- lib/httpclient/cacert1024.pem
|
28
31
|
- lib/httpclient/connection.rb
|
29
32
|
- lib/httpclient/cookie.rb
|
30
33
|
- lib/httpclient/http.rb
|
31
34
|
- lib/httpclient/include_client.rb
|
35
|
+
- lib/httpclient/jruby_ssl_socket.rb
|
32
36
|
- lib/httpclient/session.rb
|
33
37
|
- lib/httpclient/ssl_config.rb
|
38
|
+
- lib/httpclient/ssl_socket.rb
|
34
39
|
- lib/httpclient/timeout.rb
|
35
40
|
- lib/httpclient/util.rb
|
36
41
|
- lib/httpclient/version.rb
|
37
42
|
- lib/httpclient/webagent-cookie.rb
|
38
|
-
- lib/httpclient.rb
|
39
43
|
- lib/jsonclient.rb
|
40
44
|
- lib/oauthclient.rb
|
41
45
|
- sample/async.rb
|
@@ -57,7 +61,7 @@ files:
|
|
57
61
|
- sample/stream.rb
|
58
62
|
- sample/thread.rb
|
59
63
|
- sample/wcat.rb
|
60
|
-
- test/ca-chain.
|
64
|
+
- test/ca-chain.pem
|
61
65
|
- test/ca.cert
|
62
66
|
- test/client-pass.key
|
63
67
|
- test/client.cert
|
@@ -79,7 +83,6 @@ files:
|
|
79
83
|
- test/test_jsonclient.rb
|
80
84
|
- test/test_ssl.rb
|
81
85
|
- test/test_webagent-cookie.rb
|
82
|
-
- README.md
|
83
86
|
homepage: https://github.com/nahi/httpclient
|
84
87
|
licenses:
|
85
88
|
- ruby
|
@@ -90,17 +93,17 @@ require_paths:
|
|
90
93
|
- lib
|
91
94
|
required_ruby_version: !ruby/object:Gem::Requirement
|
92
95
|
requirements:
|
93
|
-
- -
|
96
|
+
- - ">="
|
94
97
|
- !ruby/object:Gem::Version
|
95
98
|
version: '0'
|
96
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
100
|
requirements:
|
98
|
-
- -
|
101
|
+
- - ">="
|
99
102
|
- !ruby/object:Gem::Version
|
100
103
|
version: '0'
|
101
104
|
requirements: []
|
102
105
|
rubyforge_project:
|
103
|
-
rubygems_version: 2.
|
106
|
+
rubygems_version: 2.4.5.1
|
104
107
|
signing_key:
|
105
108
|
specification_version: 4
|
106
109
|
summary: gives something like the functionality of libwww-perl (LWP) in Ruby
|