tech-angels-typhoeus 0.1.36
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/README.textile +312 -0
- data/Rakefile +39 -0
- data/VERSION +1 -0
- data/benchmarks/profile.rb +25 -0
- data/benchmarks/vs_nethttp.rb +35 -0
- data/examples/twitter.rb +21 -0
- data/ext/typhoeus/.gitignore +5 -0
- data/ext/typhoeus/Makefile +157 -0
- data/ext/typhoeus/extconf.rb +65 -0
- data/ext/typhoeus/native.c +11 -0
- data/ext/typhoeus/native.h +21 -0
- data/ext/typhoeus/typhoeus_easy.c +207 -0
- data/ext/typhoeus/typhoeus_easy.h +19 -0
- data/ext/typhoeus/typhoeus_multi.c +225 -0
- data/ext/typhoeus/typhoeus_multi.h +16 -0
- data/lib/typhoeus.rb +55 -0
- data/lib/typhoeus/.gitignore +1 -0
- data/lib/typhoeus/easy.rb +329 -0
- data/lib/typhoeus/filter.rb +28 -0
- data/lib/typhoeus/hydra.rb +235 -0
- data/lib/typhoeus/multi.rb +35 -0
- data/lib/typhoeus/remote.rb +306 -0
- data/lib/typhoeus/remote_method.rb +108 -0
- data/lib/typhoeus/remote_proxy_object.rb +48 -0
- data/lib/typhoeus/request.rb +159 -0
- data/lib/typhoeus/response.rb +49 -0
- data/lib/typhoeus/service.rb +20 -0
- data/profilers/valgrind.rb +24 -0
- data/spec/fixtures/result_set.xml +60 -0
- data/spec/servers/app.rb +73 -0
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/typhoeus/easy_spec.rb +236 -0
- data/spec/typhoeus/filter_spec.rb +35 -0
- data/spec/typhoeus/hydra_spec.rb +311 -0
- data/spec/typhoeus/multi_spec.rb +74 -0
- data/spec/typhoeus/remote_method_spec.rb +141 -0
- data/spec/typhoeus/remote_proxy_object_spec.rb +65 -0
- data/spec/typhoeus/remote_spec.rb +695 -0
- data/spec/typhoeus/request_spec.rb +169 -0
- data/spec/typhoeus/response_spec.rb +63 -0
- data/typhoeus.gemspec +112 -0
- metadata +203 -0
@@ -0,0 +1,169 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe Typhoeus::Request do
|
4
|
+
describe "#params_string" do
|
5
|
+
it "should dump a sorted string" do
|
6
|
+
request = Typhoeus::Request.new(
|
7
|
+
"http://google.com",
|
8
|
+
:params => {
|
9
|
+
'b' => 'fdsa',
|
10
|
+
'a' => 'jlk',
|
11
|
+
'c' => '789'
|
12
|
+
}
|
13
|
+
)
|
14
|
+
|
15
|
+
request.params_string.should == "a=jlk&b=fdsa&c=789"
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should accept symboled keys" do
|
19
|
+
request = Typhoeus::Request.new('http://google.com',
|
20
|
+
:params => {
|
21
|
+
:b => 'fdsa',
|
22
|
+
:a => 'jlk',
|
23
|
+
:c => '789'
|
24
|
+
})
|
25
|
+
request.params_string.should == "a=jlk&b=fdsa&c=789"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "quick request methods" do
|
30
|
+
it "can run a GET synchronously" do
|
31
|
+
response = Typhoeus::Request.get("http://localhost:3000", :params => {:q => "hi"}, :headers => {:foo => "bar"})
|
32
|
+
response.code.should == 200
|
33
|
+
JSON.parse(response.body)["REQUEST_METHOD"].should == "GET"
|
34
|
+
end
|
35
|
+
|
36
|
+
it "can run a POST synchronously" do
|
37
|
+
response = Typhoeus::Request.post("http://localhost:3000", :params => {:q => "hi"}, :headers => {:foo => "bar"})
|
38
|
+
response.code.should == 200
|
39
|
+
json = JSON.parse(response.body)
|
40
|
+
json["REQUEST_METHOD"].should == "POST"
|
41
|
+
json["rack.request.query_hash"]["q"].should == "hi"
|
42
|
+
end
|
43
|
+
|
44
|
+
it "can run a PUT synchronously" do
|
45
|
+
response = Typhoeus::Request.put("http://localhost:3000", :params => {:q => "hi"}, :headers => {:foo => "bar"})
|
46
|
+
response.code.should == 200
|
47
|
+
JSON.parse(response.body)["REQUEST_METHOD"].should == "PUT"
|
48
|
+
end
|
49
|
+
|
50
|
+
it "can run a DELETE synchronously" do
|
51
|
+
response = Typhoeus::Request.delete("http://localhost:3000", :params => {:q => "hi"}, :headers => {:foo => "bar"})
|
52
|
+
response.code.should == 200
|
53
|
+
JSON.parse(response.body)["REQUEST_METHOD"].should == "DELETE"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
it "takes url as the first argument" do
|
58
|
+
Typhoeus::Request.new("http://localhost:3000").url.should == "http://localhost:3000"
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should parse the host from the url" do
|
62
|
+
Typhoeus::Request.new("http://localhost:3000/whatever?hi=foo").host.should == "http://localhost:3000"
|
63
|
+
Typhoeus::Request.new("http://localhost:3000?hi=foo").host.should == "http://localhost:3000"
|
64
|
+
Typhoeus::Request.new("http://localhost:3000").host.should == "http://localhost:3000"
|
65
|
+
end
|
66
|
+
|
67
|
+
it "takes method as an option" do
|
68
|
+
Typhoeus::Request.new("http://localhost:3000", :method => :get).method.should == :get
|
69
|
+
end
|
70
|
+
|
71
|
+
it "takes headers as an option" do
|
72
|
+
headers = {:foo => :bar}
|
73
|
+
request = Typhoeus::Request.new("http://localhost:3000", :headers => headers)
|
74
|
+
request.headers.should == headers
|
75
|
+
end
|
76
|
+
|
77
|
+
it "takes params as an option and adds them to the url" do
|
78
|
+
Typhoeus::Request.new("http://localhost:3000", :params => {:foo => "bar"}).url.should == "http://localhost:3000?foo=bar"
|
79
|
+
end
|
80
|
+
|
81
|
+
it "takes request body as an option" do
|
82
|
+
Typhoeus::Request.new("http://localhost:3000", :body => "whatever").body.should == "whatever"
|
83
|
+
end
|
84
|
+
|
85
|
+
it "takes timeout as an option" do
|
86
|
+
Typhoeus::Request.new("http://localhost:3000", :timeout => 10).timeout.should == 10
|
87
|
+
end
|
88
|
+
|
89
|
+
it "takes cache_timeout as an option" do
|
90
|
+
Typhoeus::Request.new("http://localhost:3000", :cache_timeout => 60).cache_timeout.should == 60
|
91
|
+
end
|
92
|
+
|
93
|
+
it "takes follow_location as an option" do
|
94
|
+
Typhoeus::Request.new("http://localhost:3000", :follow_location => true).follow_location.should == true
|
95
|
+
end
|
96
|
+
|
97
|
+
it "takes max_redirects as an option" do
|
98
|
+
Typhoeus::Request.new("http://localhost:3000", :max_redirects => 10).max_redirects.should == 10
|
99
|
+
end
|
100
|
+
|
101
|
+
it "has the associated response object" do
|
102
|
+
request = Typhoeus::Request.new("http://localhost:3000")
|
103
|
+
request.response = :foo
|
104
|
+
request.response.should == :foo
|
105
|
+
end
|
106
|
+
|
107
|
+
it "has an on_complete handler that is called when the request is completed" do
|
108
|
+
request = Typhoeus::Request.new("http://localhost:3000")
|
109
|
+
foo = nil
|
110
|
+
request.on_complete do |response|
|
111
|
+
foo = response
|
112
|
+
end
|
113
|
+
request.response = :bar
|
114
|
+
request.call_handlers
|
115
|
+
foo.should == :bar
|
116
|
+
end
|
117
|
+
|
118
|
+
it "has an on_complete setter" do
|
119
|
+
foo = nil
|
120
|
+
proc = Proc.new {|response| foo = response}
|
121
|
+
request = Typhoeus::Request.new("http://localhost:3000")
|
122
|
+
request.on_complete = proc
|
123
|
+
request.response = :bar
|
124
|
+
request.call_handlers
|
125
|
+
foo.should == :bar
|
126
|
+
end
|
127
|
+
|
128
|
+
it "stores the handled response that is the return value from the on_complete block" do
|
129
|
+
request = Typhoeus::Request.new("http://localhost:3000")
|
130
|
+
request.on_complete do |response|
|
131
|
+
"handled"
|
132
|
+
end
|
133
|
+
request.response = :bar
|
134
|
+
request.call_handlers
|
135
|
+
request.handled_response.should == "handled"
|
136
|
+
end
|
137
|
+
|
138
|
+
it "has an after_complete handler that recieves what on_complete returns" do
|
139
|
+
request = Typhoeus::Request.new("http://localhost:3000")
|
140
|
+
request.on_complete do |response|
|
141
|
+
"handled"
|
142
|
+
end
|
143
|
+
good = nil
|
144
|
+
request.after_complete do |object|
|
145
|
+
good = object == "handled"
|
146
|
+
end
|
147
|
+
request.call_handlers
|
148
|
+
good.should be_true
|
149
|
+
end
|
150
|
+
|
151
|
+
it "has an after_complete setter" do
|
152
|
+
request = Typhoeus::Request.new("http://localhost:3000")
|
153
|
+
request.on_complete do |response|
|
154
|
+
"handled"
|
155
|
+
end
|
156
|
+
good = nil
|
157
|
+
proc = Proc.new {|object| good = object == "handled"}
|
158
|
+
request.after_complete = proc
|
159
|
+
|
160
|
+
request.call_handlers
|
161
|
+
good.should be_true
|
162
|
+
end
|
163
|
+
|
164
|
+
describe "retry" do
|
165
|
+
it "should take a retry option"
|
166
|
+
it "should count the number of times a request has failed"
|
167
|
+
end
|
168
|
+
|
169
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe Typhoeus::Response do
|
4
|
+
describe "initialize" do
|
5
|
+
it "should store response_code" do
|
6
|
+
Typhoeus::Response.new(:code => 200).code.should == 200
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should store response_headers" do
|
10
|
+
Typhoeus::Response.new(:headers => "a header!").headers.should == "a header!"
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should store response_body" do
|
14
|
+
Typhoeus::Response.new(:body => "a body!").body.should == "a body!"
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should store request_time" do
|
18
|
+
Typhoeus::Response.new(:time => 1.23).time.should == 1.23
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should store requested_url" do
|
22
|
+
response = Typhoeus::Response.new(:requested_url => "http://test.com")
|
23
|
+
response.requested_url.should == "http://test.com"
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should store requested_http_method" do
|
27
|
+
response = Typhoeus::Response.new(:requested_http_method => :delete)
|
28
|
+
response.requested_http_method.should == :delete
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should store an associated request object" do
|
32
|
+
response = Typhoeus::Response.new(:request => "whatever")
|
33
|
+
response.request.should == "whatever"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "headers" do
|
38
|
+
it "can parse the headers into a hash" do
|
39
|
+
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")
|
40
|
+
response.headers_hash["Status"].should == "200"
|
41
|
+
response.headers_hash["Set-Cookie"].should == ["_some_session=BAh7CDoGciIAOg9zZXNzaW9uX2lkIiU1OTQ2OTcwMjljMWM5ZTQwODU1NjQwYTViMmQxMTkxMjoGcyIKL2NhcnQ%3D--b4c4663932243090c961bb93d4ad5e4327064730; path=/; HttpOnly", "foo=bar; path=/;"]
|
42
|
+
response.headers_hash["Content-Type"].should == "text/html; charset=utf-8"
|
43
|
+
end
|
44
|
+
|
45
|
+
it "parses a header key that appears multiple times into an array" do
|
46
|
+
response = Typhoeus::Response.new(:headers => "HTTP/1.1 302 Found\r\nContent-Type: text/html; charset=utf-8\r\nConnection: close\r\nStatus: 302\r\nX-Powered-By: Phusion Passenger (mod_rails/mod_rack) 2.2.9\r\nLocation: http://mckenzie-greenholt1512.myshopify.com/cart\r\nX-Runtime: 22\r\nCache-Control: no-cache\r\nContent-Length: 114\r\nSet-Cookie: cart=8fdd6a828d9c89a737a52668be0cebaf; path=/; expires=Fri, 12-Mar-2010 18:30:19 GMT\r\nSet-Cookie: _session=BAh7CToPc2Vzc2lvbl9pZCIlZTQzMDQzMDg1YjI3MTQ4MzAzMTZmMWZmMWJjMTU1NmI6CWNhcnQiJThmZGQ2YTgyOGQ5Yzg5YTczN2E1MjY2OGJlMGNlYmFmOgZyIgA6BnMiDi9jYXJ0L2FkZA%3D%3D--6b0a699625caed9597580d8e9b6ca5f5e5954125; path=/; HttpOnly\r\nServer: nginx/0.6.37 + Phusion Passenger 2.2.4 (mod_rails/mod_rack)\r\nP3P: CP=\"NOI DSP COR NID ADMa OPTa OUR NOR\"\r\n\r\n")
|
47
|
+
response.headers_hash["Set-Cookie"].should include("cart=8fdd6a828d9c89a737a52668be0cebaf; path=/; expires=Fri, 12-Mar-2010 18:30:19 GMT")
|
48
|
+
response.headers_hash["Set-Cookie"].should include("_session=BAh7CToPc2Vzc2lvbl9pZCIlZTQzMDQzMDg1YjI3MTQ4MzAzMTZmMWZmMWJjMTU1NmI6CWNhcnQiJThmZGQ2YTgyOGQ5Yzg5YTczN2E1MjY2OGJlMGNlYmFmOgZyIgA6BnMiDi9jYXJ0L2FkZA%3D%3D--6b0a699625caed9597580d8e9b6ca5f5e5954125; path=/; HttpOnly")
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "status checking" do
|
53
|
+
it "is successful if response code is 200-299" do
|
54
|
+
Typhoeus::Response.new(:code => 220).success?.should be
|
55
|
+
Typhoeus::Response.new(:code => 400).success?.should_not be
|
56
|
+
end
|
57
|
+
|
58
|
+
it "is not modified if the status code is 304" do
|
59
|
+
Typhoeus::Response.new(:code => 304).modified?.should_not be
|
60
|
+
Typhoeus::Response.new(:code => 200).modified?.should be
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/typhoeus.gemspec
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{tech-angels-typhoeus}
|
8
|
+
s.version = "0.1.36"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Paul Dix"]
|
12
|
+
s.date = %q{2010-06-04}
|
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{paul@pauldix.net}
|
15
|
+
s.extensions = ["ext/typhoeus/extconf.rb"]
|
16
|
+
s.extra_rdoc_files = [
|
17
|
+
"README.textile"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".gitignore",
|
21
|
+
"README.textile",
|
22
|
+
"Rakefile",
|
23
|
+
"VERSION",
|
24
|
+
"benchmarks/profile.rb",
|
25
|
+
"benchmarks/vs_nethttp.rb",
|
26
|
+
"examples/twitter.rb",
|
27
|
+
"ext/typhoeus/.gitignore",
|
28
|
+
"ext/typhoeus/Makefile",
|
29
|
+
"ext/typhoeus/extconf.rb",
|
30
|
+
"ext/typhoeus/native.c",
|
31
|
+
"ext/typhoeus/native.h",
|
32
|
+
"ext/typhoeus/typhoeus_easy.c",
|
33
|
+
"ext/typhoeus/typhoeus_easy.h",
|
34
|
+
"ext/typhoeus/typhoeus_multi.c",
|
35
|
+
"ext/typhoeus/typhoeus_multi.h",
|
36
|
+
"lib/typhoeus.rb",
|
37
|
+
"lib/typhoeus/.gitignore",
|
38
|
+
"lib/typhoeus/easy.rb",
|
39
|
+
"lib/typhoeus/filter.rb",
|
40
|
+
"lib/typhoeus/hydra.rb",
|
41
|
+
"lib/typhoeus/multi.rb",
|
42
|
+
"lib/typhoeus/remote.rb",
|
43
|
+
"lib/typhoeus/remote_method.rb",
|
44
|
+
"lib/typhoeus/remote_proxy_object.rb",
|
45
|
+
"lib/typhoeus/request.rb",
|
46
|
+
"lib/typhoeus/response.rb",
|
47
|
+
"lib/typhoeus/service.rb",
|
48
|
+
"profilers/valgrind.rb",
|
49
|
+
"spec/fixtures/result_set.xml",
|
50
|
+
"spec/servers/app.rb",
|
51
|
+
"spec/spec.opts",
|
52
|
+
"spec/spec_helper.rb",
|
53
|
+
"spec/typhoeus/easy_spec.rb",
|
54
|
+
"spec/typhoeus/filter_spec.rb",
|
55
|
+
"spec/typhoeus/hydra_spec.rb",
|
56
|
+
"spec/typhoeus/multi_spec.rb",
|
57
|
+
"spec/typhoeus/remote_method_spec.rb",
|
58
|
+
"spec/typhoeus/remote_proxy_object_spec.rb",
|
59
|
+
"spec/typhoeus/remote_spec.rb",
|
60
|
+
"spec/typhoeus/request_spec.rb",
|
61
|
+
"spec/typhoeus/response_spec.rb",
|
62
|
+
"typhoeus.gemspec"
|
63
|
+
]
|
64
|
+
s.homepage = %q{http://github.com/pauldix/typhoeus}
|
65
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
66
|
+
s.require_paths = ["lib"]
|
67
|
+
s.rubygems_version = %q{1.3.6}
|
68
|
+
s.summary = %q{A library for interacting with web services (and building SOAs) at blinding speed.}
|
69
|
+
s.test_files = [
|
70
|
+
"spec/servers/app.rb",
|
71
|
+
"spec/spec_helper.rb",
|
72
|
+
"spec/typhoeus/easy_spec.rb",
|
73
|
+
"spec/typhoeus/filter_spec.rb",
|
74
|
+
"spec/typhoeus/hydra_spec.rb",
|
75
|
+
"spec/typhoeus/multi_spec.rb",
|
76
|
+
"spec/typhoeus/remote_method_spec.rb",
|
77
|
+
"spec/typhoeus/remote_proxy_object_spec.rb",
|
78
|
+
"spec/typhoeus/remote_spec.rb",
|
79
|
+
"spec/typhoeus/request_spec.rb",
|
80
|
+
"spec/typhoeus/response_spec.rb",
|
81
|
+
"examples/twitter.rb"
|
82
|
+
]
|
83
|
+
|
84
|
+
if s.respond_to? :specification_version then
|
85
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
86
|
+
s.specification_version = 3
|
87
|
+
|
88
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
89
|
+
s.add_runtime_dependency(%q<rack>, [">= 0"])
|
90
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
91
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
92
|
+
s.add_development_dependency(%q<diff-lcs>, [">= 0"])
|
93
|
+
s.add_development_dependency(%q<sinatra>, [">= 0"])
|
94
|
+
s.add_development_dependency(%q<json>, [">= 0"])
|
95
|
+
else
|
96
|
+
s.add_dependency(%q<rack>, [">= 0"])
|
97
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
98
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
99
|
+
s.add_dependency(%q<diff-lcs>, [">= 0"])
|
100
|
+
s.add_dependency(%q<sinatra>, [">= 0"])
|
101
|
+
s.add_dependency(%q<json>, [">= 0"])
|
102
|
+
end
|
103
|
+
else
|
104
|
+
s.add_dependency(%q<rack>, [">= 0"])
|
105
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
106
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
107
|
+
s.add_dependency(%q<diff-lcs>, [">= 0"])
|
108
|
+
s.add_dependency(%q<sinatra>, [">= 0"])
|
109
|
+
s.add_dependency(%q<json>, [">= 0"])
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
metadata
ADDED
@@ -0,0 +1,203 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tech-angels-typhoeus
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 83
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 36
|
10
|
+
version: 0.1.36
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Paul Dix
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2010-06-04 00:00:00 +02:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: rack
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: rspec
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
version: "0"
|
47
|
+
type: :development
|
48
|
+
version_requirements: *id002
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: jeweler
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
61
|
+
type: :development
|
62
|
+
version_requirements: *id003
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: diff-lcs
|
65
|
+
prerelease: false
|
66
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
version: "0"
|
75
|
+
type: :development
|
76
|
+
version_requirements: *id004
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
name: sinatra
|
79
|
+
prerelease: false
|
80
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
hash: 3
|
86
|
+
segments:
|
87
|
+
- 0
|
88
|
+
version: "0"
|
89
|
+
type: :development
|
90
|
+
version_requirements: *id005
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: json
|
93
|
+
prerelease: false
|
94
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
hash: 3
|
100
|
+
segments:
|
101
|
+
- 0
|
102
|
+
version: "0"
|
103
|
+
type: :development
|
104
|
+
version_requirements: *id006
|
105
|
+
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.
|
106
|
+
email: paul@pauldix.net
|
107
|
+
executables: []
|
108
|
+
|
109
|
+
extensions:
|
110
|
+
- ext/typhoeus/extconf.rb
|
111
|
+
extra_rdoc_files:
|
112
|
+
- README.textile
|
113
|
+
files:
|
114
|
+
- .gitignore
|
115
|
+
- README.textile
|
116
|
+
- Rakefile
|
117
|
+
- VERSION
|
118
|
+
- benchmarks/profile.rb
|
119
|
+
- benchmarks/vs_nethttp.rb
|
120
|
+
- examples/twitter.rb
|
121
|
+
- ext/typhoeus/.gitignore
|
122
|
+
- ext/typhoeus/Makefile
|
123
|
+
- ext/typhoeus/extconf.rb
|
124
|
+
- ext/typhoeus/native.c
|
125
|
+
- ext/typhoeus/native.h
|
126
|
+
- ext/typhoeus/typhoeus_easy.c
|
127
|
+
- ext/typhoeus/typhoeus_easy.h
|
128
|
+
- ext/typhoeus/typhoeus_multi.c
|
129
|
+
- ext/typhoeus/typhoeus_multi.h
|
130
|
+
- lib/typhoeus.rb
|
131
|
+
- lib/typhoeus/.gitignore
|
132
|
+
- lib/typhoeus/easy.rb
|
133
|
+
- lib/typhoeus/filter.rb
|
134
|
+
- lib/typhoeus/hydra.rb
|
135
|
+
- lib/typhoeus/multi.rb
|
136
|
+
- lib/typhoeus/remote.rb
|
137
|
+
- lib/typhoeus/remote_method.rb
|
138
|
+
- lib/typhoeus/remote_proxy_object.rb
|
139
|
+
- lib/typhoeus/request.rb
|
140
|
+
- lib/typhoeus/response.rb
|
141
|
+
- lib/typhoeus/service.rb
|
142
|
+
- profilers/valgrind.rb
|
143
|
+
- spec/fixtures/result_set.xml
|
144
|
+
- spec/servers/app.rb
|
145
|
+
- spec/spec.opts
|
146
|
+
- spec/spec_helper.rb
|
147
|
+
- spec/typhoeus/easy_spec.rb
|
148
|
+
- spec/typhoeus/filter_spec.rb
|
149
|
+
- spec/typhoeus/hydra_spec.rb
|
150
|
+
- spec/typhoeus/multi_spec.rb
|
151
|
+
- spec/typhoeus/remote_method_spec.rb
|
152
|
+
- spec/typhoeus/remote_proxy_object_spec.rb
|
153
|
+
- spec/typhoeus/remote_spec.rb
|
154
|
+
- spec/typhoeus/request_spec.rb
|
155
|
+
- spec/typhoeus/response_spec.rb
|
156
|
+
- typhoeus.gemspec
|
157
|
+
has_rdoc: true
|
158
|
+
homepage: http://github.com/pauldix/typhoeus
|
159
|
+
licenses: []
|
160
|
+
|
161
|
+
post_install_message:
|
162
|
+
rdoc_options:
|
163
|
+
- --charset=UTF-8
|
164
|
+
require_paths:
|
165
|
+
- lib
|
166
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
167
|
+
none: false
|
168
|
+
requirements:
|
169
|
+
- - ">="
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
hash: 3
|
172
|
+
segments:
|
173
|
+
- 0
|
174
|
+
version: "0"
|
175
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
|
+
none: false
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
hash: 3
|
181
|
+
segments:
|
182
|
+
- 0
|
183
|
+
version: "0"
|
184
|
+
requirements: []
|
185
|
+
|
186
|
+
rubyforge_project:
|
187
|
+
rubygems_version: 1.3.7
|
188
|
+
signing_key:
|
189
|
+
specification_version: 3
|
190
|
+
summary: A library for interacting with web services (and building SOAs) at blinding speed.
|
191
|
+
test_files:
|
192
|
+
- spec/servers/app.rb
|
193
|
+
- spec/spec_helper.rb
|
194
|
+
- spec/typhoeus/easy_spec.rb
|
195
|
+
- spec/typhoeus/filter_spec.rb
|
196
|
+
- spec/typhoeus/hydra_spec.rb
|
197
|
+
- spec/typhoeus/multi_spec.rb
|
198
|
+
- spec/typhoeus/remote_method_spec.rb
|
199
|
+
- spec/typhoeus/remote_proxy_object_spec.rb
|
200
|
+
- spec/typhoeus/remote_spec.rb
|
201
|
+
- spec/typhoeus/request_spec.rb
|
202
|
+
- spec/typhoeus/response_spec.rb
|
203
|
+
- examples/twitter.rb
|