fblee-typhoeus 0.1.31

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/.gitignore +2 -0
  2. data/CHANGELOG.markdown +27 -0
  3. data/README.textile +333 -0
  4. data/Rakefile +39 -0
  5. data/VERSION +1 -0
  6. data/benchmarks/profile.rb +25 -0
  7. data/benchmarks/vs_nethttp.rb +35 -0
  8. data/examples/twitter.rb +21 -0
  9. data/ext/typhoeus/.gitignore +5 -0
  10. data/ext/typhoeus/Makefile +157 -0
  11. data/ext/typhoeus/extconf.rb +65 -0
  12. data/ext/typhoeus/native.c +11 -0
  13. data/ext/typhoeus/native.h +21 -0
  14. data/ext/typhoeus/typhoeus_easy.c +207 -0
  15. data/ext/typhoeus/typhoeus_easy.h +19 -0
  16. data/ext/typhoeus/typhoeus_multi.c +225 -0
  17. data/ext/typhoeus/typhoeus_multi.h +16 -0
  18. data/lib/typhoeus/.gitignore +1 -0
  19. data/lib/typhoeus/easy.rb +348 -0
  20. data/lib/typhoeus/filter.rb +28 -0
  21. data/lib/typhoeus/hydra.rb +243 -0
  22. data/lib/typhoeus/multi.rb +35 -0
  23. data/lib/typhoeus/remote.rb +306 -0
  24. data/lib/typhoeus/remote_method.rb +108 -0
  25. data/lib/typhoeus/remote_proxy_object.rb +48 -0
  26. data/lib/typhoeus/request.rb +172 -0
  27. data/lib/typhoeus/response.rb +49 -0
  28. data/lib/typhoeus/service.rb +20 -0
  29. data/lib/typhoeus.rb +55 -0
  30. data/profilers/valgrind.rb +24 -0
  31. data/spec/fixtures/result_set.xml +60 -0
  32. data/spec/servers/app.rb +84 -0
  33. data/spec/spec.opts +2 -0
  34. data/spec/spec_helper.rb +11 -0
  35. data/spec/typhoeus/easy_spec.rb +249 -0
  36. data/spec/typhoeus/filter_spec.rb +35 -0
  37. data/spec/typhoeus/hydra_spec.rb +311 -0
  38. data/spec/typhoeus/multi_spec.rb +74 -0
  39. data/spec/typhoeus/remote_method_spec.rb +141 -0
  40. data/spec/typhoeus/remote_proxy_object_spec.rb +65 -0
  41. data/spec/typhoeus/remote_spec.rb +695 -0
  42. data/spec/typhoeus/request_spec.rb +195 -0
  43. data/spec/typhoeus/response_spec.rb +63 -0
  44. data/typhoeus.gemspec +113 -0
  45. metadata +188 -0
@@ -0,0 +1,195 @@
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 "authentication" do
165
+
166
+ it "should allow to set username and password" do
167
+ auth = { :username => 'foo', :password => 'bar' }
168
+ e = Typhoeus::Request.get(
169
+ "http://localhost:3001/auth_basic/#{auth[:username]}/#{auth[:password]}",
170
+ auth
171
+ )
172
+ e.code.should == 200
173
+ end
174
+
175
+ it "should allow to set authentication method" do
176
+ auth = {
177
+ :username => 'username',
178
+ :password => 'password',
179
+ :auth_method => :ntlm
180
+ }
181
+ e = Typhoeus::Request.get(
182
+ "http://localhost:3001/auth_ntlm",
183
+ auth
184
+ )
185
+ e.code.should == 200
186
+ end
187
+
188
+ end
189
+
190
+ describe "retry" do
191
+ it "should take a retry option"
192
+ it "should count the number of times a request has failed"
193
+ end
194
+
195
+ 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,113 @@
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{fblee-typhoeus}
8
+ s.version = "0.1.31"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Paul Dix", "Lee Mallabone"]
12
+ s.date = %q{2010-07-16}
13
+ s.description = %q{ (Fork of official typhoeus that enables cookie support) 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
+ "CHANGELOG.markdown",
22
+ "README.textile",
23
+ "Rakefile",
24
+ "VERSION",
25
+ "benchmarks/profile.rb",
26
+ "benchmarks/vs_nethttp.rb",
27
+ "examples/twitter.rb",
28
+ "ext/typhoeus/.gitignore",
29
+ "ext/typhoeus/Makefile",
30
+ "ext/typhoeus/extconf.rb",
31
+ "ext/typhoeus/native.c",
32
+ "ext/typhoeus/native.h",
33
+ "ext/typhoeus/typhoeus_easy.c",
34
+ "ext/typhoeus/typhoeus_easy.h",
35
+ "ext/typhoeus/typhoeus_multi.c",
36
+ "ext/typhoeus/typhoeus_multi.h",
37
+ "lib/typhoeus.rb",
38
+ "lib/typhoeus/.gitignore",
39
+ "lib/typhoeus/easy.rb",
40
+ "lib/typhoeus/filter.rb",
41
+ "lib/typhoeus/hydra.rb",
42
+ "lib/typhoeus/multi.rb",
43
+ "lib/typhoeus/remote.rb",
44
+ "lib/typhoeus/remote_method.rb",
45
+ "lib/typhoeus/remote_proxy_object.rb",
46
+ "lib/typhoeus/request.rb",
47
+ "lib/typhoeus/response.rb",
48
+ "lib/typhoeus/service.rb",
49
+ "profilers/valgrind.rb",
50
+ "spec/fixtures/result_set.xml",
51
+ "spec/servers/app.rb",
52
+ "spec/spec.opts",
53
+ "spec/spec_helper.rb",
54
+ "spec/typhoeus/easy_spec.rb",
55
+ "spec/typhoeus/filter_spec.rb",
56
+ "spec/typhoeus/hydra_spec.rb",
57
+ "spec/typhoeus/multi_spec.rb",
58
+ "spec/typhoeus/remote_method_spec.rb",
59
+ "spec/typhoeus/remote_proxy_object_spec.rb",
60
+ "spec/typhoeus/remote_spec.rb",
61
+ "spec/typhoeus/request_spec.rb",
62
+ "spec/typhoeus/response_spec.rb",
63
+ "typhoeus.gemspec"
64
+ ]
65
+ s.homepage = %q{http://github.com/pauldix/typhoeus}
66
+ s.rdoc_options = ["--charset=UTF-8"]
67
+ s.require_paths = ["lib"]
68
+ s.rubygems_version = %q{1.3.6}
69
+ s.summary = %q{A library for interacting with web services (and building SOAs) at blinding speed.}
70
+ s.test_files = [
71
+ "spec/servers/app.rb",
72
+ "spec/spec_helper.rb",
73
+ "spec/typhoeus/easy_spec.rb",
74
+ "spec/typhoeus/filter_spec.rb",
75
+ "spec/typhoeus/hydra_spec.rb",
76
+ "spec/typhoeus/multi_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
+ "examples/twitter.rb"
83
+ ]
84
+
85
+ if s.respond_to? :specification_version then
86
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
87
+ s.specification_version = 3
88
+
89
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
90
+ s.add_runtime_dependency(%q<rack>, [">= 0"])
91
+ s.add_development_dependency(%q<rspec>, [">= 0"])
92
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
93
+ s.add_development_dependency(%q<diff-lcs>, [">= 0"])
94
+ s.add_development_dependency(%q<sinatra>, [">= 0"])
95
+ s.add_development_dependency(%q<json>, [">= 0"])
96
+ else
97
+ s.add_dependency(%q<rack>, [">= 0"])
98
+ s.add_dependency(%q<rspec>, [">= 0"])
99
+ s.add_dependency(%q<jeweler>, [">= 0"])
100
+ s.add_dependency(%q<diff-lcs>, [">= 0"])
101
+ s.add_dependency(%q<sinatra>, [">= 0"])
102
+ s.add_dependency(%q<json>, [">= 0"])
103
+ end
104
+ else
105
+ s.add_dependency(%q<rack>, [">= 0"])
106
+ s.add_dependency(%q<rspec>, [">= 0"])
107
+ s.add_dependency(%q<jeweler>, [">= 0"])
108
+ s.add_dependency(%q<diff-lcs>, [">= 0"])
109
+ s.add_dependency(%q<sinatra>, [">= 0"])
110
+ s.add_dependency(%q<json>, [">= 0"])
111
+ end
112
+ end
113
+
metadata ADDED
@@ -0,0 +1,188 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fblee-typhoeus
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 31
9
+ version: 0.1.31
10
+ platform: ruby
11
+ authors:
12
+ - Paul Dix
13
+ - Lee Mallabone
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-07-16 00:00:00 +01: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
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :runtime
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: rspec
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ segments:
41
+ - 0
42
+ version: "0"
43
+ type: :development
44
+ version_requirements: *id002
45
+ - !ruby/object:Gem::Dependency
46
+ name: jeweler
47
+ prerelease: false
48
+ requirement: &id003 !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ segments:
53
+ - 0
54
+ version: "0"
55
+ type: :development
56
+ version_requirements: *id003
57
+ - !ruby/object:Gem::Dependency
58
+ name: diff-lcs
59
+ prerelease: false
60
+ requirement: &id004 !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ segments:
65
+ - 0
66
+ version: "0"
67
+ type: :development
68
+ version_requirements: *id004
69
+ - !ruby/object:Gem::Dependency
70
+ name: sinatra
71
+ prerelease: false
72
+ requirement: &id005 !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ segments:
77
+ - 0
78
+ version: "0"
79
+ type: :development
80
+ version_requirements: *id005
81
+ - !ruby/object:Gem::Dependency
82
+ name: json
83
+ prerelease: false
84
+ requirement: &id006 !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ segments:
89
+ - 0
90
+ version: "0"
91
+ type: :development
92
+ version_requirements: *id006
93
+ description: " (Fork of official typhoeus that enables cookie support) Like a modern code version of the mythical beast with 100 serpent heads, Typhoeus runs HTTP requests in parallel while cleanly encapsulating handling logic."
94
+ email: paul@pauldix.net
95
+ executables: []
96
+
97
+ extensions:
98
+ - ext/typhoeus/extconf.rb
99
+ extra_rdoc_files:
100
+ - README.textile
101
+ files:
102
+ - .gitignore
103
+ - CHANGELOG.markdown
104
+ - README.textile
105
+ - Rakefile
106
+ - VERSION
107
+ - benchmarks/profile.rb
108
+ - benchmarks/vs_nethttp.rb
109
+ - examples/twitter.rb
110
+ - ext/typhoeus/.gitignore
111
+ - ext/typhoeus/Makefile
112
+ - ext/typhoeus/extconf.rb
113
+ - ext/typhoeus/native.c
114
+ - ext/typhoeus/native.h
115
+ - ext/typhoeus/typhoeus_easy.c
116
+ - ext/typhoeus/typhoeus_easy.h
117
+ - ext/typhoeus/typhoeus_multi.c
118
+ - ext/typhoeus/typhoeus_multi.h
119
+ - lib/typhoeus.rb
120
+ - lib/typhoeus/.gitignore
121
+ - lib/typhoeus/easy.rb
122
+ - lib/typhoeus/filter.rb
123
+ - lib/typhoeus/hydra.rb
124
+ - lib/typhoeus/multi.rb
125
+ - lib/typhoeus/remote.rb
126
+ - lib/typhoeus/remote_method.rb
127
+ - lib/typhoeus/remote_proxy_object.rb
128
+ - lib/typhoeus/request.rb
129
+ - lib/typhoeus/response.rb
130
+ - lib/typhoeus/service.rb
131
+ - profilers/valgrind.rb
132
+ - spec/fixtures/result_set.xml
133
+ - spec/servers/app.rb
134
+ - spec/spec.opts
135
+ - spec/spec_helper.rb
136
+ - spec/typhoeus/easy_spec.rb
137
+ - spec/typhoeus/filter_spec.rb
138
+ - spec/typhoeus/hydra_spec.rb
139
+ - spec/typhoeus/multi_spec.rb
140
+ - spec/typhoeus/remote_method_spec.rb
141
+ - spec/typhoeus/remote_proxy_object_spec.rb
142
+ - spec/typhoeus/remote_spec.rb
143
+ - spec/typhoeus/request_spec.rb
144
+ - spec/typhoeus/response_spec.rb
145
+ - typhoeus.gemspec
146
+ has_rdoc: true
147
+ homepage: http://github.com/pauldix/typhoeus
148
+ licenses: []
149
+
150
+ post_install_message:
151
+ rdoc_options:
152
+ - --charset=UTF-8
153
+ require_paths:
154
+ - lib
155
+ required_ruby_version: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ segments:
160
+ - 0
161
+ version: "0"
162
+ required_rubygems_version: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ segments:
167
+ - 0
168
+ version: "0"
169
+ requirements: []
170
+
171
+ rubyforge_project:
172
+ rubygems_version: 1.3.6
173
+ signing_key:
174
+ specification_version: 3
175
+ summary: A library for interacting with web services (and building SOAs) at blinding speed.
176
+ test_files:
177
+ - spec/servers/app.rb
178
+ - spec/spec_helper.rb
179
+ - spec/typhoeus/easy_spec.rb
180
+ - spec/typhoeus/filter_spec.rb
181
+ - spec/typhoeus/hydra_spec.rb
182
+ - spec/typhoeus/multi_spec.rb
183
+ - spec/typhoeus/remote_method_spec.rb
184
+ - spec/typhoeus/remote_proxy_object_spec.rb
185
+ - spec/typhoeus/remote_spec.rb
186
+ - spec/typhoeus/request_spec.rb
187
+ - spec/typhoeus/response_spec.rb
188
+ - examples/twitter.rb