typhoeus 0.2.4 → 0.3.2
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.
- data/CHANGELOG.markdown +22 -0
- data/Gemfile +1 -9
- data/Gemfile.lock +21 -18
- data/Rakefile +19 -7
- data/ext/typhoeus/typhoeus_multi.c +7 -1
- data/lib/typhoeus.rb +1 -2
- data/lib/typhoeus/easy.rb +25 -5
- data/lib/typhoeus/hydra.rb +5 -1
- data/lib/typhoeus/hydra/stubbing.rb +16 -0
- data/lib/typhoeus/request.rb +32 -4
- data/lib/typhoeus/response.rb +36 -5
- data/lib/typhoeus/utils.rb +5 -4
- data/lib/typhoeus/version.rb +3 -0
- data/spec/servers/app.rb +4 -0
- data/spec/spec_helper.rb +3 -3
- data/spec/typhoeus/easy_spec.rb +46 -10
- data/spec/typhoeus/form_spec.rb +17 -7
- data/spec/typhoeus/hydra_mock_spec.rb +22 -22
- data/spec/typhoeus/hydra_spec.rb +76 -0
- data/spec/typhoeus/request_spec.rb +97 -2
- data/spec/typhoeus/response_spec.rb +41 -0
- data/typhoeus.gemspec +28 -137
- metadata +43 -98
- data/README.textile +0 -372
- data/VERSION +0 -1
- data/benchmarks/profile.rb +0 -25
- data/benchmarks/vs_nethttp.rb +0 -35
- data/examples/file.rb +0 -12
- data/examples/times.rb +0 -40
- data/examples/twitter.rb +0 -21
- data/profilers/valgrind.rb +0 -24
- data/spec/spec.opts +0 -3
@@ -31,6 +31,52 @@ describe Typhoeus::Request do
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
+
context "marshalling" do
|
35
|
+
|
36
|
+
let(:request) do
|
37
|
+
Typhoeus::Request.new("http://google.com")
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "#marshal_dump" do
|
41
|
+
context "when an on_complete handler is defined" do
|
42
|
+
|
43
|
+
before do
|
44
|
+
request.on_complete {}
|
45
|
+
end
|
46
|
+
|
47
|
+
it "does not raise an error" do
|
48
|
+
lambda { Marshal.dump(request) }.should_not raise_error(TypeError)
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
context "when an after_complete handler is defined" do
|
54
|
+
|
55
|
+
before do
|
56
|
+
request.after_complete {}
|
57
|
+
end
|
58
|
+
|
59
|
+
it "does not raise an error" do
|
60
|
+
lambda { Marshal.dump(request) }.should_not raise_error(TypeError)
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
it "is reversible but exclude handlers" do
|
68
|
+
request.on_complete {}
|
69
|
+
request.after_complete {}
|
70
|
+
|
71
|
+
new_request = Marshal.load(Marshal.dump(request))
|
72
|
+
|
73
|
+
new_request.url.should == request.url
|
74
|
+
new_request.on_complete.should be_nil
|
75
|
+
new_request.after_complete.should be_nil
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
34
80
|
describe "#localhost?" do
|
35
81
|
%w(localhost 127.0.0.1 0.0.0.0).each do |host|
|
36
82
|
it "should be true for the #{host} host" do
|
@@ -74,6 +120,14 @@ describe Typhoeus::Request do
|
|
74
120
|
:params => {
|
75
121
|
:a => ['789','2434']
|
76
122
|
})
|
123
|
+
request.params_string.should == "a=789&a=2434"
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should allow the newer bracket notation for array params" do
|
127
|
+
request = Typhoeus::Request.new('http://google.com',
|
128
|
+
:params => {
|
129
|
+
"a[]" => ['789','2434']
|
130
|
+
})
|
77
131
|
request.params_string.should == "a%5B%5D=789&a%5B%5D=2434"
|
78
132
|
end
|
79
133
|
|
@@ -82,7 +136,7 @@ describe Typhoeus::Request do
|
|
82
136
|
:params => {
|
83
137
|
:a => { :b => { :c => ['d','e'] } }
|
84
138
|
})
|
85
|
-
request.params_string.should == "a%5Bb%5D%5Bc%5D
|
139
|
+
request.params_string.should == "a%5Bb%5D%5Bc%5D=d&a%5Bb%5D%5Bc%5D=e"
|
86
140
|
end
|
87
141
|
|
88
142
|
it "should translate nested params correctly" do
|
@@ -104,9 +158,10 @@ describe Typhoeus::Request do
|
|
104
158
|
it "can run a POST synchronously" do
|
105
159
|
response = Typhoeus::Request.post("http://localhost:3000", :params => {:q => { :a => "hi" } }, :headers => {:foo => "bar"})
|
106
160
|
response.code.should == 200
|
161
|
+
|
107
162
|
json = JSON.parse(response.body)
|
108
163
|
json["REQUEST_METHOD"].should == "POST"
|
109
|
-
json["rack.request.
|
164
|
+
json["rack.request.form_hash"]["q"]["a"].should == "hi"
|
110
165
|
end
|
111
166
|
|
112
167
|
it "can run a PUT synchronously" do
|
@@ -154,10 +209,50 @@ describe Typhoeus::Request do
|
|
154
209
|
Typhoeus::Request.new("http://localhost:3000", :timeout => 10).timeout.should == 10
|
155
210
|
end
|
156
211
|
|
212
|
+
it "accepts a string for the timeout option" do
|
213
|
+
Typhoeus::Request.new("http://localhost:3000", :timeout => "150").timeout.should == 150
|
214
|
+
end
|
215
|
+
|
216
|
+
it "doesn't convert a nil timeout to an integer" do
|
217
|
+
Typhoeus::Request.new("http://localhost:3000", :timeout => nil).timeout.should_not == nil.to_i
|
218
|
+
end
|
219
|
+
|
220
|
+
it "doesn't convert an empty timeout to an integer" do
|
221
|
+
Typhoeus::Request.new("http://localhost:3000", :timeout => "").timeout.should_not == "".to_i
|
222
|
+
end
|
223
|
+
|
224
|
+
it "takes connect_timeout as an option" do
|
225
|
+
Typhoeus::Request.new("http://localhost:3000", :connect_timeout => 14).connect_timeout.should == 14
|
226
|
+
end
|
227
|
+
|
228
|
+
it "accepts a string for the connect_timeout option" do
|
229
|
+
Typhoeus::Request.new("http://localhost:3000", :connect_timeout => "420").connect_timeout.should == 420
|
230
|
+
end
|
231
|
+
|
232
|
+
it "doesn't convert a nil connect_timeout to an integer" do
|
233
|
+
Typhoeus::Request.new("http://localhost:3000", :connect_timeout => nil).connect_timeout.should_not == nil.to_i
|
234
|
+
end
|
235
|
+
|
236
|
+
it "doesn't convert an empty connect_timeout to an integer" do
|
237
|
+
Typhoeus::Request.new("http://localhost:3000", :connect_timeout => "").connect_timeout.should_not == "".to_i
|
238
|
+
end
|
239
|
+
|
157
240
|
it "takes cache_timeout as an option" do
|
158
241
|
Typhoeus::Request.new("http://localhost:3000", :cache_timeout => 60).cache_timeout.should == 60
|
159
242
|
end
|
160
243
|
|
244
|
+
it "accepts a string for the cache_timeout option" do
|
245
|
+
Typhoeus::Request.new("http://localhost:3000", :cache_timeout => "42").cache_timeout.should == 42
|
246
|
+
end
|
247
|
+
|
248
|
+
it "doesn't convert a nil cache_timeout to an integer" do
|
249
|
+
Typhoeus::Request.new("http://localhost:3000", :cache_timeout => nil).cache_timeout.should_not == nil.to_i
|
250
|
+
end
|
251
|
+
|
252
|
+
it "doesn't convert an empty cache_timeout to an integer" do
|
253
|
+
Typhoeus::Request.new("http://localhost:3000", :cache_timeout => "").cache_timeout.should_not == "".to_i
|
254
|
+
end
|
255
|
+
|
161
256
|
it "takes follow_location as an option" do
|
162
257
|
Typhoeus::Request.new("http://localhost:3000", :follow_location => true).follow_location.should == true
|
163
258
|
end
|
@@ -36,6 +36,10 @@ describe Typhoeus::Response do
|
|
36
36
|
Typhoeus::Response.new.status_message.should be_nil
|
37
37
|
end
|
38
38
|
|
39
|
+
it "should return nil for status_message if a message-less header is given" do
|
40
|
+
Typhoeus::Response.new(:headers => "HTTP/1.1 200\r\n").status_message.should == nil
|
41
|
+
end
|
42
|
+
|
39
43
|
it "should store http_version" do
|
40
44
|
Typhoeus::Response.new(:http_version => '1.1').http_version.should == '1.1'
|
41
45
|
end
|
@@ -44,6 +48,10 @@ describe Typhoeus::Response do
|
|
44
48
|
Typhoeus::Response.new.http_version.should be_nil
|
45
49
|
end
|
46
50
|
|
51
|
+
it "should return nil for http version if an invalid or incomplete header is given" do
|
52
|
+
Typhoeus::Response.new(:headers => "HTTP foo/bar 200 OK\r\n").http_version.should == nil
|
53
|
+
end
|
54
|
+
|
47
55
|
it "should store response_headers" do
|
48
56
|
Typhoeus::Response.new(:headers => "a header!").headers.should == "a header!"
|
49
57
|
end
|
@@ -89,6 +97,39 @@ describe Typhoeus::Response do
|
|
89
97
|
response = Typhoeus::Response.new.headers_hash.should == {}
|
90
98
|
end
|
91
99
|
|
100
|
+
context 'when the headers_hash is stubbed' do
|
101
|
+
after(:each) { Typhoeus::Hydra.clear_stubs }
|
102
|
+
let!(:orig_response) { Typhoeus::Request.get("http://localhost:3000/multiple-headers") }
|
103
|
+
|
104
|
+
it 'returns a properly formatted string built from the headers_hash, code, status_message and http_version' do
|
105
|
+
stub_response = Typhoeus::Response.new(
|
106
|
+
:code => orig_response.code,
|
107
|
+
:headers_hash => orig_response.headers_hash,
|
108
|
+
:status_message => orig_response.status_message,
|
109
|
+
:http_version => orig_response.http_version
|
110
|
+
)
|
111
|
+
|
112
|
+
stub_response.headers.size.should == orig_response.headers.size
|
113
|
+
|
114
|
+
orig_header_lines = orig_response.headers.split("\n")
|
115
|
+
stub_header_lines = stub_response.headers.split("\n")
|
116
|
+
|
117
|
+
# HTTP version/status line should be identical
|
118
|
+
orig_header_lines.shift.should == stub_header_lines.shift
|
119
|
+
|
120
|
+
# "XSS" gets downcased, so we have to fix it here.
|
121
|
+
orig_header_lines.each { |line| line.sub!('XSS', 'Xss') }
|
122
|
+
|
123
|
+
# we can't count on the header order being identical since ruby hashes are not always ordered
|
124
|
+
orig_header_lines.should =~ stub_header_lines
|
125
|
+
end
|
126
|
+
|
127
|
+
it 'returns a valid header string even with the code, status message and http_version are not stubbed' do
|
128
|
+
response = Typhoeus::Response.new(:headers_hash => orig_response.headers_hash)
|
129
|
+
response.headers.should =~ /Content-Type/
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
92
133
|
describe "basic parsing" do
|
93
134
|
before(:all) do
|
94
135
|
@response = Typhoeus::Response.new(:headers => "HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=utf-8\r\nConnection: close\r\nStatus: 200\r\nX-Powered-By: Phusion Passenger (mod_rails/mod_rack) 2.2.9\r\nX-Cache: miss\r\nX-Runtime: 184\r\nETag: e001d08d9354ab7bc7c27a00163a3afa\r\nCache-Control: private, max-age=0, must-revalidate\r\nContent-Length: 4725\r\nSet-Cookie: _some_session=BAh7CDoGciIAOg9zZXNzaW9uX2lkIiU1OTQ2OTcwMjljMWM5ZTQwODU1NjQwYTViMmQxMTkxMjoGcyIKL2NhcnQ%3D--b4c4663932243090c961bb93d4ad5e4327064730; path=/; HttpOnly\r\nServer: nginx/0.6.37 + Phusion Passenger 2.2.4 (mod_rails/mod_rack)\r\nSet-Cookie: foo=bar; path=/;\r\nP3P: CP=\"NOI DSP COR NID ADMa OPTa OUR NOR\"\r\n\r\n")
|
data/typhoeus.gemspec
CHANGED
@@ -1,141 +1,32 @@
|
|
1
|
-
#
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
1
|
+
# encoding: utf-8
|
5
2
|
|
6
|
-
|
7
|
-
|
8
|
-
s.version = "0.2.4"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Paul Dix", "David Balatero"]
|
12
|
-
s.date = %q{2011-02-24}
|
13
|
-
s.description = %q{Like a modern code version of the mythical beast with 100 serpent heads, Typhoeus runs HTTP requests in parallel while cleanly encapsulating handling logic.}
|
14
|
-
s.email = %q{dbalatero@gmail.com}
|
15
|
-
s.extensions = ["ext/typhoeus/extconf.rb"]
|
16
|
-
s.extra_rdoc_files = [
|
17
|
-
"LICENSE",
|
18
|
-
"README.textile"
|
19
|
-
]
|
20
|
-
s.files = [
|
21
|
-
"CHANGELOG.markdown",
|
22
|
-
"Gemfile",
|
23
|
-
"Gemfile.lock",
|
24
|
-
"LICENSE",
|
25
|
-
"README.textile",
|
26
|
-
"Rakefile",
|
27
|
-
"VERSION",
|
28
|
-
"benchmarks/profile.rb",
|
29
|
-
"benchmarks/vs_nethttp.rb",
|
30
|
-
"examples/file.rb",
|
31
|
-
"examples/times.rb",
|
32
|
-
"examples/twitter.rb",
|
33
|
-
"ext/typhoeus/.gitignore",
|
34
|
-
"ext/typhoeus/extconf.rb",
|
35
|
-
"ext/typhoeus/native.c",
|
36
|
-
"ext/typhoeus/native.h",
|
37
|
-
"ext/typhoeus/typhoeus_easy.c",
|
38
|
-
"ext/typhoeus/typhoeus_easy.h",
|
39
|
-
"ext/typhoeus/typhoeus_form.c",
|
40
|
-
"ext/typhoeus/typhoeus_form.h",
|
41
|
-
"ext/typhoeus/typhoeus_multi.c",
|
42
|
-
"ext/typhoeus/typhoeus_multi.h",
|
43
|
-
"lib/typhoeus.rb",
|
44
|
-
"lib/typhoeus/.gitignore",
|
45
|
-
"lib/typhoeus/easy.rb",
|
46
|
-
"lib/typhoeus/filter.rb",
|
47
|
-
"lib/typhoeus/form.rb",
|
48
|
-
"lib/typhoeus/hydra.rb",
|
49
|
-
"lib/typhoeus/hydra/callbacks.rb",
|
50
|
-
"lib/typhoeus/hydra/connect_options.rb",
|
51
|
-
"lib/typhoeus/hydra/stubbing.rb",
|
52
|
-
"lib/typhoeus/hydra_mock.rb",
|
53
|
-
"lib/typhoeus/multi.rb",
|
54
|
-
"lib/typhoeus/normalized_header_hash.rb",
|
55
|
-
"lib/typhoeus/remote.rb",
|
56
|
-
"lib/typhoeus/remote_method.rb",
|
57
|
-
"lib/typhoeus/remote_proxy_object.rb",
|
58
|
-
"lib/typhoeus/request.rb",
|
59
|
-
"lib/typhoeus/response.rb",
|
60
|
-
"lib/typhoeus/service.rb",
|
61
|
-
"lib/typhoeus/utils.rb",
|
62
|
-
"profilers/valgrind.rb",
|
63
|
-
"spec/fixtures/placeholder.gif",
|
64
|
-
"spec/fixtures/placeholder.txt",
|
65
|
-
"spec/fixtures/placeholder.ukn",
|
66
|
-
"spec/fixtures/result_set.xml",
|
67
|
-
"spec/servers/app.rb",
|
68
|
-
"spec/spec.opts",
|
69
|
-
"spec/spec_helper.rb",
|
70
|
-
"spec/typhoeus/easy_spec.rb",
|
71
|
-
"spec/typhoeus/filter_spec.rb",
|
72
|
-
"spec/typhoeus/form_spec.rb",
|
73
|
-
"spec/typhoeus/hydra_mock_spec.rb",
|
74
|
-
"spec/typhoeus/hydra_spec.rb",
|
75
|
-
"spec/typhoeus/multi_spec.rb",
|
76
|
-
"spec/typhoeus/normalized_header_hash_spec.rb",
|
77
|
-
"spec/typhoeus/remote_method_spec.rb",
|
78
|
-
"spec/typhoeus/remote_proxy_object_spec.rb",
|
79
|
-
"spec/typhoeus/remote_spec.rb",
|
80
|
-
"spec/typhoeus/request_spec.rb",
|
81
|
-
"spec/typhoeus/response_spec.rb",
|
82
|
-
"spec/typhoeus/utils_spec.rb",
|
83
|
-
"typhoeus.gemspec"
|
84
|
-
]
|
85
|
-
s.homepage = %q{http://github.com/dbalatero/typhoeus}
|
86
|
-
s.require_paths = ["lib"]
|
87
|
-
s.rubygems_version = %q{1.3.7}
|
88
|
-
s.summary = %q{A library for interacting with web services (and building SOAs) at blinding speed.}
|
89
|
-
s.test_files = [
|
90
|
-
"examples/file.rb",
|
91
|
-
"examples/times.rb",
|
92
|
-
"examples/twitter.rb",
|
93
|
-
"spec/servers/app.rb",
|
94
|
-
"spec/spec_helper.rb",
|
95
|
-
"spec/typhoeus/easy_spec.rb",
|
96
|
-
"spec/typhoeus/filter_spec.rb",
|
97
|
-
"spec/typhoeus/form_spec.rb",
|
98
|
-
"spec/typhoeus/hydra_mock_spec.rb",
|
99
|
-
"spec/typhoeus/hydra_spec.rb",
|
100
|
-
"spec/typhoeus/multi_spec.rb",
|
101
|
-
"spec/typhoeus/normalized_header_hash_spec.rb",
|
102
|
-
"spec/typhoeus/remote_method_spec.rb",
|
103
|
-
"spec/typhoeus/remote_proxy_object_spec.rb",
|
104
|
-
"spec/typhoeus/remote_spec.rb",
|
105
|
-
"spec/typhoeus/request_spec.rb",
|
106
|
-
"spec/typhoeus/response_spec.rb",
|
107
|
-
"spec/typhoeus/utils_spec.rb"
|
108
|
-
]
|
3
|
+
$:.unshift File.expand_path('../lib', __FILE__)
|
4
|
+
require 'typhoeus/version'
|
109
5
|
|
110
|
-
|
111
|
-
|
112
|
-
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "typhoeus"
|
8
|
+
s.version = Typhoeus::VERSION
|
9
|
+
s.authors = ["David Balatero", "Paul Dix"]
|
10
|
+
s.email = "dbalatero@gmail.com"
|
11
|
+
s.homepage = "https://github.com/dbalatero/typhoeus"
|
12
|
+
s.summary = "Parallel HTTP library on top of libcurl multi."
|
13
|
+
s.description = %q{Like a modern code version of the mythical beast with 100 serpent heads, Typhoeus runs HTTP requests in parallel while cleanly encapsulating handling logic.}
|
14
|
+
s.extensions = ["ext/typhoeus/extconf.rb"]
|
15
|
+
s.files = (`git ls-files ext lib spec`.split("\n")) + [
|
16
|
+
'CHANGELOG.markdown',
|
17
|
+
'Gemfile',
|
18
|
+
'Gemfile.lock',
|
19
|
+
'LICENSE',
|
20
|
+
'Rakefile',
|
21
|
+
'typhoeus.gemspec'
|
22
|
+
]
|
23
|
+
s.platform = Gem::Platform::RUBY
|
24
|
+
s.require_path = 'lib'
|
25
|
+
s.rubyforge_project = '[none]'
|
113
26
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
s.add_development_dependency(%q<diff-lcs>, [">= 0"])
|
120
|
-
s.add_development_dependency(%q<sinatra>, [">= 0"])
|
121
|
-
s.add_development_dependency(%q<json>, [">= 0"])
|
122
|
-
else
|
123
|
-
s.add_dependency(%q<mime-types>, [">= 0"])
|
124
|
-
s.add_dependency(%q<mime-types>, [">= 0"])
|
125
|
-
s.add_dependency(%q<rspec>, [">= 0"])
|
126
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
127
|
-
s.add_dependency(%q<diff-lcs>, [">= 0"])
|
128
|
-
s.add_dependency(%q<sinatra>, [">= 0"])
|
129
|
-
s.add_dependency(%q<json>, [">= 0"])
|
130
|
-
end
|
131
|
-
else
|
132
|
-
s.add_dependency(%q<mime-types>, [">= 0"])
|
133
|
-
s.add_dependency(%q<mime-types>, [">= 0"])
|
134
|
-
s.add_dependency(%q<rspec>, [">= 0"])
|
135
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
136
|
-
s.add_dependency(%q<diff-lcs>, [">= 0"])
|
137
|
-
s.add_dependency(%q<sinatra>, [">= 0"])
|
138
|
-
s.add_dependency(%q<json>, [">= 0"])
|
139
|
-
end
|
27
|
+
s.add_runtime_dependency 'mime-types', ['>= 0']
|
28
|
+
s.add_development_dependency 'rspec', ["~> 2.6"]
|
29
|
+
s.add_development_dependency 'diff-lcs', [">= 0"]
|
30
|
+
s.add_development_dependency 'sinatra', [">= 0"]
|
31
|
+
s.add_development_dependency 'json', [">= 0"]
|
140
32
|
end
|
141
|
-
|
metadata
CHANGED
@@ -1,42 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: typhoeus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 23
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 3
|
8
9
|
- 2
|
9
|
-
|
10
|
-
version: 0.2.4
|
10
|
+
version: 0.3.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
|
-
- Paul Dix
|
14
13
|
- David Balatero
|
14
|
+
- Paul Dix
|
15
15
|
autorequire:
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-
|
20
|
-
default_executable:
|
19
|
+
date: 2011-10-18 00:00:00 Z
|
21
20
|
dependencies:
|
22
21
|
- !ruby/object:Gem::Dependency
|
23
|
-
type: :runtime
|
24
|
-
prerelease: false
|
25
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
|
-
requirements:
|
28
|
-
- - ">="
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
hash: 3
|
31
|
-
segments:
|
32
|
-
- 0
|
33
|
-
version: "0"
|
34
22
|
name: mime-types
|
35
|
-
requirement: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
type: :runtime
|
38
23
|
prerelease: false
|
39
|
-
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
40
25
|
none: false
|
41
26
|
requirements:
|
42
27
|
- - ">="
|
@@ -45,40 +30,27 @@ dependencies:
|
|
45
30
|
segments:
|
46
31
|
- 0
|
47
32
|
version: "0"
|
48
|
-
|
49
|
-
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
50
35
|
- !ruby/object:Gem::Dependency
|
51
|
-
type: :development
|
52
|
-
prerelease: false
|
53
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
54
|
-
none: false
|
55
|
-
requirements:
|
56
|
-
- - ">="
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
hash: 3
|
59
|
-
segments:
|
60
|
-
- 0
|
61
|
-
version: "0"
|
62
36
|
name: rspec
|
63
|
-
requirement: *id003
|
64
|
-
- !ruby/object:Gem::Dependency
|
65
|
-
type: :development
|
66
37
|
prerelease: false
|
67
|
-
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
68
39
|
none: false
|
69
40
|
requirements:
|
70
|
-
- -
|
41
|
+
- - ~>
|
71
42
|
- !ruby/object:Gem::Version
|
72
|
-
hash:
|
43
|
+
hash: 15
|
73
44
|
segments:
|
74
|
-
-
|
75
|
-
|
76
|
-
|
77
|
-
requirement: *id004
|
78
|
-
- !ruby/object:Gem::Dependency
|
45
|
+
- 2
|
46
|
+
- 6
|
47
|
+
version: "2.6"
|
79
48
|
type: :development
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: diff-lcs
|
80
52
|
prerelease: false
|
81
|
-
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
82
54
|
none: false
|
83
55
|
requirements:
|
84
56
|
- - ">="
|
@@ -87,12 +59,12 @@ dependencies:
|
|
87
59
|
segments:
|
88
60
|
- 0
|
89
61
|
version: "0"
|
90
|
-
name: diff-lcs
|
91
|
-
requirement: *id005
|
92
|
-
- !ruby/object:Gem::Dependency
|
93
62
|
type: :development
|
63
|
+
version_requirements: *id003
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: sinatra
|
94
66
|
prerelease: false
|
95
|
-
|
67
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
96
68
|
none: false
|
97
69
|
requirements:
|
98
70
|
- - ">="
|
@@ -101,12 +73,12 @@ dependencies:
|
|
101
73
|
segments:
|
102
74
|
- 0
|
103
75
|
version: "0"
|
104
|
-
name: sinatra
|
105
|
-
requirement: *id006
|
106
|
-
- !ruby/object:Gem::Dependency
|
107
76
|
type: :development
|
77
|
+
version_requirements: *id004
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: json
|
108
80
|
prerelease: false
|
109
|
-
|
81
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
110
82
|
none: false
|
111
83
|
requirements:
|
112
84
|
- - ">="
|
@@ -115,30 +87,17 @@ dependencies:
|
|
115
87
|
segments:
|
116
88
|
- 0
|
117
89
|
version: "0"
|
118
|
-
|
119
|
-
|
90
|
+
type: :development
|
91
|
+
version_requirements: *id005
|
120
92
|
description: Like a modern code version of the mythical beast with 100 serpent heads, Typhoeus runs HTTP requests in parallel while cleanly encapsulating handling logic.
|
121
93
|
email: dbalatero@gmail.com
|
122
94
|
executables: []
|
123
95
|
|
124
96
|
extensions:
|
125
97
|
- ext/typhoeus/extconf.rb
|
126
|
-
extra_rdoc_files:
|
127
|
-
|
128
|
-
- README.textile
|
98
|
+
extra_rdoc_files: []
|
99
|
+
|
129
100
|
files:
|
130
|
-
- CHANGELOG.markdown
|
131
|
-
- Gemfile
|
132
|
-
- Gemfile.lock
|
133
|
-
- LICENSE
|
134
|
-
- README.textile
|
135
|
-
- Rakefile
|
136
|
-
- VERSION
|
137
|
-
- benchmarks/profile.rb
|
138
|
-
- benchmarks/vs_nethttp.rb
|
139
|
-
- examples/file.rb
|
140
|
-
- examples/times.rb
|
141
|
-
- examples/twitter.rb
|
142
101
|
- ext/typhoeus/.gitignore
|
143
102
|
- ext/typhoeus/extconf.rb
|
144
103
|
- ext/typhoeus/native.c
|
@@ -168,13 +127,12 @@ files:
|
|
168
127
|
- lib/typhoeus/response.rb
|
169
128
|
- lib/typhoeus/service.rb
|
170
129
|
- lib/typhoeus/utils.rb
|
171
|
-
-
|
130
|
+
- lib/typhoeus/version.rb
|
172
131
|
- spec/fixtures/placeholder.gif
|
173
132
|
- spec/fixtures/placeholder.txt
|
174
133
|
- spec/fixtures/placeholder.ukn
|
175
134
|
- spec/fixtures/result_set.xml
|
176
135
|
- spec/servers/app.rb
|
177
|
-
- spec/spec.opts
|
178
136
|
- spec/spec_helper.rb
|
179
137
|
- spec/typhoeus/easy_spec.rb
|
180
138
|
- spec/typhoeus/filter_spec.rb
|
@@ -189,9 +147,13 @@ files:
|
|
189
147
|
- spec/typhoeus/request_spec.rb
|
190
148
|
- spec/typhoeus/response_spec.rb
|
191
149
|
- spec/typhoeus/utils_spec.rb
|
150
|
+
- CHANGELOG.markdown
|
151
|
+
- Gemfile
|
152
|
+
- Gemfile.lock
|
153
|
+
- LICENSE
|
154
|
+
- Rakefile
|
192
155
|
- typhoeus.gemspec
|
193
|
-
|
194
|
-
homepage: http://github.com/dbalatero/typhoeus
|
156
|
+
homepage: https://github.com/dbalatero/typhoeus
|
195
157
|
licenses: []
|
196
158
|
|
197
159
|
post_install_message:
|
@@ -219,27 +181,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
219
181
|
version: "0"
|
220
182
|
requirements: []
|
221
183
|
|
222
|
-
rubyforge_project:
|
223
|
-
rubygems_version: 1.
|
184
|
+
rubyforge_project: "[none]"
|
185
|
+
rubygems_version: 1.8.10
|
224
186
|
signing_key:
|
225
187
|
specification_version: 3
|
226
|
-
summary:
|
227
|
-
test_files:
|
228
|
-
|
229
|
-
- examples/times.rb
|
230
|
-
- examples/twitter.rb
|
231
|
-
- spec/servers/app.rb
|
232
|
-
- spec/spec_helper.rb
|
233
|
-
- spec/typhoeus/easy_spec.rb
|
234
|
-
- spec/typhoeus/filter_spec.rb
|
235
|
-
- spec/typhoeus/form_spec.rb
|
236
|
-
- spec/typhoeus/hydra_mock_spec.rb
|
237
|
-
- spec/typhoeus/hydra_spec.rb
|
238
|
-
- spec/typhoeus/multi_spec.rb
|
239
|
-
- spec/typhoeus/normalized_header_hash_spec.rb
|
240
|
-
- spec/typhoeus/remote_method_spec.rb
|
241
|
-
- spec/typhoeus/remote_proxy_object_spec.rb
|
242
|
-
- spec/typhoeus/remote_spec.rb
|
243
|
-
- spec/typhoeus/request_spec.rb
|
244
|
-
- spec/typhoeus/response_spec.rb
|
245
|
-
- spec/typhoeus/utils_spec.rb
|
188
|
+
summary: Parallel HTTP library on top of libcurl multi.
|
189
|
+
test_files: []
|
190
|
+
|