glebtv-httpclient 3.2.7 → 3.2.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +2 -2
- data/Gemfile +0 -9
- data/Gemfile.lock +34 -258
- data/README.md +1 -0
- data/httpclient.gemspec +1 -2
- data/lib/httpclient/auth.rb +241 -157
- data/lib/httpclient/cacert.p7s +3865 -1911
- data/lib/httpclient/lru_cache.rb +27 -24
- data/lib/httpclient/ssl_config.rb +3 -2
- data/lib/httpclient/version.rb +2 -1
- data/spec/basic_spec.rb +82 -82
- data/spec/cookie_spec.rb +132 -132
- data/spec/hexdump_spec.rb +1 -1
- data/spec/http_message_spec.rb +37 -37
- data/spec/httpclient_spec.rb +267 -263
- data/spec/keepalive_spec.rb +5 -5
- data/spec/lru_spec.rb +5 -11
- data/test/test_auth.rb +29 -2
- metadata +2 -30
data/spec/keepalive_spec.rb
CHANGED
@@ -87,7 +87,7 @@ describe 'KeepAlive' do
|
|
87
87
|
(0...10).to_a.map {
|
88
88
|
Thread.new {
|
89
89
|
Thread.abort_on_exception = true
|
90
|
-
client.get(endpoint).content.
|
90
|
+
expect(client.get(endpoint).content).to eq "12345"
|
91
91
|
}
|
92
92
|
}.each { |th| th.join }
|
93
93
|
# send 5 requests, which should get KeepAliveDesconnected.
|
@@ -95,14 +95,14 @@ describe 'KeepAlive' do
|
|
95
95
|
(0...5).to_a.map {
|
96
96
|
Thread.new {
|
97
97
|
Thread.abort_on_exception = true
|
98
|
-
client.get(endpoint).content.
|
98
|
+
expect(client.get(endpoint).content).to eq "23456"
|
99
99
|
}
|
100
100
|
}.each { |th| th.join }
|
101
101
|
# rest requests won't get KeepAliveDisconnected; how can I check this?
|
102
102
|
(0...10).to_a.map {
|
103
103
|
Thread.new {
|
104
104
|
Thread.abort_on_exception = true
|
105
|
-
client.get(endpoint).content.
|
105
|
+
expect(client.get(endpoint).content).to eq "34567"
|
106
106
|
}
|
107
107
|
}.each { |th| th.join }
|
108
108
|
end
|
@@ -118,11 +118,11 @@ describe 'KeepAlive' do
|
|
118
118
|
url = "http://127.0.0.1:#{server.addr[1]}/"
|
119
119
|
# content-length
|
120
120
|
5.times do
|
121
|
-
client.get(url).body.
|
121
|
+
expect(client.get(url).body).to eq '12345'
|
122
122
|
end
|
123
123
|
# chunked
|
124
124
|
5.times do
|
125
|
-
client.get(url + 'chunked').body.
|
125
|
+
expect(client.get(url + 'chunked').body).to eq 'abcdefghijklmnopqrstuvwxyz1234567890abcdef'
|
126
126
|
end
|
127
127
|
server_thread.join
|
128
128
|
end
|
data/spec/lru_spec.rb
CHANGED
@@ -3,20 +3,14 @@ require 'spec_helper'
|
|
3
3
|
|
4
4
|
describe HTTPClient::LRUCache do
|
5
5
|
before :each do
|
6
|
-
@cache = subject.class.new(ttl:
|
6
|
+
@cache = subject.class.new(ttl: 1, max_size: 2, soft_ttl: 2)
|
7
7
|
end
|
8
8
|
|
9
9
|
it 'expires values' do
|
10
|
-
@cache.fetch
|
11
|
-
|
12
|
-
|
13
|
-
@cache.fetch
|
14
|
-
3
|
15
|
-
end.should eq 2
|
16
|
-
sleep 4
|
17
|
-
@cache.fetch 'test' do
|
18
|
-
4
|
19
|
-
end.should eq 4
|
10
|
+
expect(@cache.fetch('test') { 2 }).to eq(2)
|
11
|
+
expect(@cache.fetch('test') { 3 }).to eq(2)
|
12
|
+
sleep 2
|
13
|
+
expect(@cache.fetch('test') { 4 }).to eq(4)
|
20
14
|
end
|
21
15
|
end
|
22
16
|
|
data/test/test_auth.rb
CHANGED
@@ -110,7 +110,6 @@ class TestAuth < Test::Unit::TestCase
|
|
110
110
|
def test_BASIC_auth
|
111
111
|
c = HTTPClient.new
|
112
112
|
webrick_backup = @basic_auth.instance_eval { @auth_scheme }
|
113
|
-
#httpaccess2_backup = c.www_auth.basic_auth.instance_eval { @scheme }
|
114
113
|
begin
|
115
114
|
@basic_auth.instance_eval { @auth_scheme = "BASIC" }
|
116
115
|
c.www_auth.basic_auth.instance_eval { @scheme = "BASIC" }
|
@@ -118,7 +117,35 @@ class TestAuth < Test::Unit::TestCase
|
|
118
117
|
assert_equal('basic_auth OK', c.get_content("http://localhost:#{serverport}/basic_auth"))
|
119
118
|
ensure
|
120
119
|
@basic_auth.instance_eval { @auth_scheme = webrick_backup }
|
121
|
-
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
# To work this test consistently on CRuby you can to add 'Thread.pass' in
|
124
|
+
# @challenge iteration at BasicAuth#get like;
|
125
|
+
#
|
126
|
+
# return nil unless @challenge.find { |uri, ok|
|
127
|
+
# Thread.pass
|
128
|
+
# Util.uri_part_of(target_uri, uri) and ok
|
129
|
+
# }
|
130
|
+
def test_BASIC_auth_multi_thread
|
131
|
+
c = HTTPClient.new
|
132
|
+
webrick_backup = @basic_auth.instance_eval { @auth_scheme }
|
133
|
+
begin
|
134
|
+
@basic_auth.instance_eval { @auth_scheme = "BASIC" }
|
135
|
+
c.www_auth.basic_auth.instance_eval { @scheme = "BASIC" }
|
136
|
+
c.set_auth("http://localhost:#{serverport}/", 'admin', 'admin')
|
137
|
+
|
138
|
+
threads = 100.times.map { |idx|
|
139
|
+
Thread.new(idx) { |idx2|
|
140
|
+
Thread.abort_on_exception = true
|
141
|
+
Thread.pass
|
142
|
+
c.get("http://localhost:#{serverport}/basic_auth?#{idx2}")
|
143
|
+
}
|
144
|
+
}.map { |t|
|
145
|
+
t.join
|
146
|
+
}
|
147
|
+
ensure
|
148
|
+
@basic_auth.instance_eval { @auth_scheme = webrick_backup }
|
122
149
|
end
|
123
150
|
end
|
124
151
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glebtv-httpclient
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- glebtv
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-08-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: lru_redux
|
@@ -53,20 +53,6 @@ dependencies:
|
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
name: test-unit
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - ">="
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '0'
|
63
|
-
type: :development
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - ">="
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
70
56
|
- !ruby/object:Gem::Dependency
|
71
57
|
name: rspec
|
72
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,20 +109,6 @@ dependencies:
|
|
123
109
|
- - ">="
|
124
110
|
- !ruby/object:Gem::Version
|
125
111
|
version: '0'
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
name: rspecify
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
129
|
-
requirements:
|
130
|
-
- - ">="
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
version: '0'
|
133
|
-
type: :development
|
134
|
-
prerelease: false
|
135
|
-
version_requirements: !ruby/object:Gem::Requirement
|
136
|
-
requirements:
|
137
|
-
- - ">="
|
138
|
-
- !ruby/object:Gem::Version
|
139
|
-
version: '0'
|
140
112
|
description:
|
141
113
|
email: glebtv@gmail.com
|
142
114
|
executables:
|