typhoeus 0.1.24 → 0.1.25

Sign up to get free protection for your applications and to get access to all the features.
@@ -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,94 @@
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{typhoeus}
8
+ s.version = "0.1.25"
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-05-13}
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
+ else
90
+ end
91
+ else
92
+ end
93
+ end
94
+
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 24
9
- version: 0.1.24
8
+ - 25
9
+ version: 0.1.25
10
10
  platform: ruby
11
11
  authors:
12
12
  - Paul Dix
@@ -14,73 +14,71 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2009-07-03 00:00:00 -04:00
17
+ date: 2010-05-13 00:00:00 -07:00
18
18
  default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: rack
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">"
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 0
29
- - 9
30
- - 0
31
- version: 0.9.0
32
- type: :runtime
33
- version_requirements: *id001
34
- description:
19
+ dependencies: []
20
+
21
+ 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.
35
22
  email: paul@pauldix.net
36
23
  executables: []
37
24
 
38
25
  extensions:
39
26
  - ext/typhoeus/extconf.rb
40
- extra_rdoc_files: []
41
-
27
+ extra_rdoc_files:
28
+ - README.textile
42
29
  files:
43
30
  - .gitignore
31
+ - README.textile
32
+ - Rakefile
33
+ - VERSION
34
+ - benchmarks/profile.rb
35
+ - benchmarks/vs_nethttp.rb
36
+ - examples/twitter.rb
44
37
  - ext/typhoeus/.gitignore
38
+ - ext/typhoeus/Makefile
45
39
  - ext/typhoeus/extconf.rb
46
- - ext/typhoeus/typhoeus_easy.h
40
+ - ext/typhoeus/native.c
41
+ - ext/typhoeus/native.h
47
42
  - ext/typhoeus/typhoeus_easy.c
48
- - ext/typhoeus/typhoeus_multi.h
43
+ - ext/typhoeus/typhoeus_easy.h
49
44
  - ext/typhoeus/typhoeus_multi.c
50
- - ext/typhoeus/Makefile
51
- - ext/typhoeus/native.h
52
- - ext/typhoeus/native.c
45
+ - ext/typhoeus/typhoeus_multi.h
53
46
  - lib/typhoeus.rb
54
47
  - lib/typhoeus/.gitignore
55
48
  - lib/typhoeus/easy.rb
49
+ - lib/typhoeus/filter.rb
50
+ - lib/typhoeus/hydra.rb
56
51
  - lib/typhoeus/multi.rb
57
52
  - lib/typhoeus/remote.rb
58
- - lib/typhoeus/remote_proxy_object.rb
59
- - lib/typhoeus/filter.rb
60
53
  - lib/typhoeus/remote_method.rb
61
- - lib/typhoeus/response.rb
62
- - lib/typhoeus/hydra.rb
54
+ - lib/typhoeus/remote_proxy_object.rb
63
55
  - lib/typhoeus/request.rb
56
+ - lib/typhoeus/response.rb
57
+ - lib/typhoeus/service.rb
58
+ - profilers/valgrind.rb
59
+ - spec/fixtures/result_set.xml
60
+ - spec/servers/app.rb
64
61
  - spec/spec.opts
65
62
  - spec/spec_helper.rb
66
63
  - spec/typhoeus/easy_spec.rb
67
- - spec/typhoeus/multi_spec.rb
68
- - spec/typhoeus/remote_spec.rb
69
- - spec/typhoeus/remote_proxy_object_spec.rb
70
64
  - spec/typhoeus/filter_spec.rb
65
+ - spec/typhoeus/hydra_spec.rb
66
+ - spec/typhoeus/multi_spec.rb
71
67
  - spec/typhoeus/remote_method_spec.rb
68
+ - spec/typhoeus/remote_proxy_object_spec.rb
69
+ - spec/typhoeus/remote_spec.rb
70
+ - spec/typhoeus/request_spec.rb
72
71
  - spec/typhoeus/response_spec.rb
73
- - spec/servers/app.rb
72
+ - typhoeus.gemspec
74
73
  has_rdoc: true
75
74
  homepage: http://github.com/pauldix/typhoeus
76
75
  licenses: []
77
76
 
78
77
  post_install_message:
79
- rdoc_options: []
80
-
78
+ rdoc_options:
79
+ - --charset=UTF-8
81
80
  require_paths:
82
81
  - lib
83
- - ext
84
82
  required_ruby_version: !ruby/object:Gem::Requirement
85
83
  requirements:
86
84
  - - ">="
@@ -100,7 +98,18 @@ requirements: []
100
98
  rubyforge_project:
101
99
  rubygems_version: 1.3.6
102
100
  signing_key:
103
- specification_version: 2
101
+ specification_version: 3
104
102
  summary: A library for interacting with web services (and building SOAs) at blinding speed.
105
- test_files: []
106
-
103
+ test_files:
104
+ - spec/servers/app.rb
105
+ - spec/spec_helper.rb
106
+ - spec/typhoeus/easy_spec.rb
107
+ - spec/typhoeus/filter_spec.rb
108
+ - spec/typhoeus/hydra_spec.rb
109
+ - spec/typhoeus/multi_spec.rb
110
+ - spec/typhoeus/remote_method_spec.rb
111
+ - spec/typhoeus/remote_proxy_object_spec.rb
112
+ - spec/typhoeus/remote_spec.rb
113
+ - spec/typhoeus/request_spec.rb
114
+ - spec/typhoeus/response_spec.rb
115
+ - examples/twitter.rb