typhoeus 0.1.24 → 0.1.25

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