fblee-typhoeus 0.1.31

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.
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