webmachine 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/spec/tests.org CHANGED
@@ -54,4 +54,27 @@
54
54
  - Comparisons of scheme names MUST be case-insensitive
55
55
  - An empty abs_path is equivalent to an abs_path of "/"
56
56
  * 3.3 Date/Time Formats
57
-
57
+ ** 3.3.1 Full Date
58
+ Formats: (RFC 822/1123, RFC850/1036, asctime())
59
+
60
+ - HTTP/1.1 clients and servers that parse the date value MUST
61
+ accept all three formats (for compatibility with HTTP/1.0),
62
+ though they MUST only generate the RFC 1123 format for
63
+ representing HTTP-date values in header fields.
64
+ - All HTTP date/time stamps MUST be represented in GMT (UTC),
65
+ without exception... This is indicated in the first two formats by
66
+ the inclusion of "GMT" as the three-letter abbreviation for time
67
+ zone, and MUST be assumed when reading the asctime format.
68
+ - HTTP-date is case sensitive and MUST NOT include additional LWS
69
+ beyond that specifically included as SP in the grammar.
70
+ * 3.4 Character Sets
71
+ - HTTP uses the same definition of the term “character set” as that
72
+ described for MIME.
73
+ - Character set tokens are defined by the IANA Character Set registry.
74
+ - ...any token that has a predefined value within the IANA Character
75
+ Set registry MUST represent the character set defined by that
76
+ registry.
77
+ - Applications SHOULD limit their use of character sets to those
78
+ defined by the IANA registry.
79
+ ** 3.4.1 Missing Charset
80
+ -
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+ require 'webmachine/adapters/rack'
3
+ require 'rack'
4
+
5
+ module Test
6
+ class Resource < Webmachine::Resource
7
+ def to_html
8
+ "<html><body>testing</body></html>"
9
+ end
10
+ end
11
+ end
12
+
13
+ describe Webmachine::Adapters::Rack do
14
+ let(:adapter) { described_class }
15
+
16
+ let(:env) do
17
+ { "REQUEST_METHOD" => "GET",
18
+ "SCRIPT_NAME" => "",
19
+ "PATH_INFO" => "/test",
20
+ "QUERY_STRING" => "",
21
+ "SERVER_NAME" => "test.server",
22
+ "SERVER_PORT" => 8080,
23
+ "rack.version" => Rack::VERSION,
24
+ "rack.url_scheme" => "http",
25
+ "rack.input" => StringIO.new,
26
+ "rack.errors" => StringIO.new,
27
+ "rack.multithread" => false,
28
+ "rack.multiprocess" => true,
29
+ "rack.run_once" => false }
30
+ end
31
+
32
+ before do
33
+ Webmachine::Dispatcher.reset
34
+ Webmachine::Dispatcher.add_route ['test'], Test::Resource
35
+ end
36
+
37
+ it "should proxy request to webmachine" do
38
+ code, headers, body = adapter.new.call(env)
39
+ code.should == 200
40
+ headers["Content-Type"].should == "text/html"
41
+ body.should include "<html><body>testing</body></html>"
42
+ end
43
+
44
+ it "should set Server header" do
45
+ code, headers, body = adapter.new.call(env)
46
+ headers.should have_key "Server"
47
+ end
48
+
49
+ it "should handle non-success correctly" do
50
+ env["PATH_INFO"] = "/missing"
51
+ code, headers, body = adapter.new.call(env)
52
+ code.should == 404
53
+ headers["Content-Type"].should == "text/html"
54
+ end
55
+
56
+ it "should handle empty bodies correctly" do
57
+ env["HTTP_ACCEPT"] = "application/json"
58
+ code, headers, body = adapter.new.call(env)
59
+ code.should == 406
60
+ headers.should_not have_key "Content-Type"
61
+ headers.should_not have_key "Content-Length"
62
+ body.should == []
63
+ end
64
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+ require 'webmachine/chunked_body'
3
+
4
+ describe Webmachine::ChunkedBody do
5
+ it "builds a proper body" do
6
+ body = ''
7
+ Webmachine::ChunkedBody.new(['foo', 'bar', '', 'j', 'webmachine']).each do |chunk|
8
+ body << chunk
9
+ end
10
+ body.should == "3\r\nfoo\r\n3\r\nbar\r\n1\r\nj\r\na\r\nwebmachine\r\n0\r\n\r\n"
11
+ end
12
+
13
+ context "with an empty body" do
14
+ it "builds a proper body" do
15
+ body = ''
16
+ Webmachine::ChunkedBody.new([]).each do |chunk|
17
+ body << chunk
18
+ end
19
+ body.should == "0\r\n\r\n"
20
+ end
21
+ end
22
+
23
+ describe "#each" do
24
+ context "without a block given" do
25
+ it "returns an Enumerator" do
26
+ Webmachine::ChunkedBody.new([]).each.should respond_to(:next)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -101,5 +101,16 @@ describe Webmachine::Decision::Helpers do
101
101
 
102
102
  it_should_behave_like "a non-String body"
103
103
  end
104
+
105
+ context "with a Fiber body" do
106
+ before { response.body = Fiber.new { Fiber.yield "foo" } }
107
+
108
+ it "wraps the response body in a FiberEncoder" do
109
+ subject.encode_body
110
+ Webmachine::FiberEncoder.should === response.body
111
+ end
112
+
113
+ it_should_behave_like "a non-String body"
114
+ end
104
115
  end
105
116
  end
@@ -17,6 +17,14 @@ describe Webmachine::Dispatcher do
17
17
  let(:fsm){ mock }
18
18
 
19
19
  before { dispatcher.reset }
20
+
21
+ it "should add routes from a block" do
22
+ _resource = resource
23
+ Webmachine.routes do
24
+ add ['*'], _resource
25
+ end.should == Webmachine
26
+ dispatcher.instance_variable_get(:@routes).should have(1).item
27
+ end
20
28
 
21
29
  it "should add routes" do
22
30
  expect {
@@ -24,6 +32,11 @@ describe Webmachine::Dispatcher do
24
32
  }.should_not raise_error
25
33
  end
26
34
 
35
+ it "should have add_route return the newly created route" do
36
+ route = dispatcher.add_route ['*'], resource
37
+ route.should be_instance_of Webmachine::Dispatcher::Route
38
+ end
39
+
27
40
  it "should route to the proper resource" do
28
41
  dispatcher.add_route ["goodbye"], resource2
29
42
  dispatcher.add_route ['*'], resource
@@ -21,4 +21,9 @@ describe Webmachine::Request do
21
21
  subject.uri.query = "foo=bar&baz=bam"
22
22
  subject.query.should == {"foo" => "bar", "baz" => "bam"}
23
23
  end
24
+
25
+ it "should treat '+' characters in query parameters as spaces" do
26
+ subject.uri.query = "a%20b=foo+bar&c+d=baz%20quux"
27
+ subject.query.should == {"a b" => "foo bar", "c d" => "baz quux"}
28
+ end
24
29
  end
@@ -0,0 +1,68 @@
1
+ require 'spec_helper'
2
+
3
+ describe Webmachine::Resource::Authentication do
4
+ subject { Webmachine::Decision::FSM.new(resource, request, response) }
5
+ let(:method) { 'GET' }
6
+ let(:uri) { URI.parse("http://localhost/") }
7
+ let(:headers) { Webmachine::Headers.new }
8
+ let(:body) { "" }
9
+ let(:request) { Webmachine::Request.new(method, uri, headers, body) }
10
+ let(:response) { Webmachine::Response.new }
11
+
12
+ def resource_with(&block)
13
+ klass = Class.new(Webmachine::Resource) do
14
+ def to_html; "test resource"; end
15
+ end
16
+ klass.module_eval(&block) if block_given?
17
+ klass.new(request, response)
18
+ end
19
+
20
+ describe "Basic authentication" do
21
+ let(:resource) do
22
+ resource_with do
23
+ include Webmachine::Resource::Authentication
24
+ attr_accessor :realm
25
+ def is_authorized?(auth)
26
+ basic_auth(auth, @realm || "Webmachine") {|u,p| u == "webmachine" && p == "http" }
27
+ end
28
+ end
29
+ end
30
+
31
+ context "when no authorization is sent by the client" do
32
+ it "should reply with a 401 Unauthorized and a WWW-Authenticate header using Basic" do
33
+ subject.run
34
+ response.code.should == 401
35
+ response.headers['WWW-Authenticate'].should == 'Basic realm="Webmachine"'
36
+ end
37
+
38
+ it "should use the specified realm in the WWW-Authenticate header" do
39
+ resource.realm = "My App"
40
+ subject.run
41
+ response.headers['WWW-Authenticate'].should == 'Basic realm="My App"'
42
+ end
43
+ end
44
+
45
+ context "when the client sends invalid authorization" do
46
+ before do
47
+ headers['Authorization'] = "Basic " + ["invalid:auth"].pack('m*').chomp
48
+ end
49
+
50
+ it "should reply with a 401 Unauthorized and a WWW-Authenticate header using Basic" do
51
+ subject.run
52
+ response.code.should == 401
53
+ response.headers['WWW-Authenticate'].should == 'Basic realm="Webmachine"'
54
+ end
55
+ end
56
+
57
+ context "when the client sends valid authorization" do
58
+ before do
59
+ headers['Authorization'] = "Basic " + ["webmachine:http"].pack('m*').chomp
60
+ end
61
+
62
+ it "should not reply with 401 Unauthorized" do
63
+ subject.run
64
+ response.code.should_not == 401
65
+ end
66
+ end
67
+ end
68
+ end
data/webmachine.gemspec CHANGED
@@ -21,22 +21,25 @@ Gem::Specification.new do |gem|
21
21
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
22
22
  gem.add_runtime_dependency(%q<i18n>, [">= 0.4.0"])
23
23
  gem.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
24
- gem.add_development_dependency(%q<yard>, ["~> 0.6.7"])
24
+ gem.add_development_dependency(%q<yard>, ["~> 0.7.3"])
25
25
  gem.add_development_dependency(%q<rake>)
26
26
  gem.add_development_dependency(%q<mongrel>, ['~>1.2.beta'])
27
+ gem.add_development_dependency(%q<rack>)
27
28
  else
28
29
  gem.add_dependency(%q<i18n>, [">= 0.4.0"])
29
30
  gem.add_dependency(%q<rspec>, ["~> 2.6.0"])
30
- gem.add_dependency(%q<yard>, ["~> 0.6.7"])
31
+ gem.add_dependency(%q<yard>, ["~> 0.7.3"])
31
32
  gem.add_dependency(%q<rake>)
32
33
  gem.add_dependency(%q<mongrel>, ['~>1.2.beta'])
34
+ gem.add_dependency(%q<rack>)
33
35
  end
34
36
  else
35
37
  gem.add_dependency(%q<i18n>, [">= 0.4.0"])
36
38
  gem.add_dependency(%q<rspec>, ["~> 2.6.0"])
37
- gem.add_dependency(%q<yard>, ["~> 0.6.7"])
39
+ gem.add_dependency(%q<yard>, ["~> 0.7.3"])
38
40
  gem.add_dependency(%q<rake>)
39
41
  gem.add_dependency(%q<mongrel>, ['~>1.2.beta'])
42
+ gem.add_dependency(%q<rack>)
40
43
  end
41
44
 
42
45
  ignores = File.read(".gitignore").split(/\r?\n/).reject{ |f| f =~ /^(#.+|\s*)$/ }.map {|f| Dir[f] }.flatten
metadata CHANGED
@@ -1,87 +1,182 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: webmachine
3
- version: !ruby/object:Gem::Version
4
- version: 0.2.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 19
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Sean Cribbs
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-09-11 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2011-11-09 00:00:00 -03:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
15
22
  name: i18n
16
- requirement: &2160756300 !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
17
25
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 15
30
+ segments:
31
+ - 0
32
+ - 4
33
+ - 0
21
34
  version: 0.4.0
22
35
  type: :runtime
23
- prerelease: false
24
- version_requirements: *2160756300
25
- - !ruby/object:Gem::Dependency
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
26
38
  name: rspec
27
- requirement: &2160755360 !ruby/object:Gem::Requirement
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
28
41
  none: false
29
- requirements:
42
+ requirements:
30
43
  - - ~>
31
- - !ruby/object:Gem::Version
44
+ - !ruby/object:Gem::Version
45
+ hash: 23
46
+ segments:
47
+ - 2
48
+ - 6
49
+ - 0
32
50
  version: 2.6.0
33
51
  type: :development
34
- prerelease: false
35
- version_requirements: *2160755360
36
- - !ruby/object:Gem::Dependency
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
37
54
  name: yard
38
- requirement: &2160754640 !ruby/object:Gem::Requirement
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
39
57
  none: false
40
- requirements:
58
+ requirements:
41
59
  - - ~>
42
- - !ruby/object:Gem::Version
43
- version: 0.6.7
60
+ - !ruby/object:Gem::Version
61
+ hash: 5
62
+ segments:
63
+ - 0
64
+ - 7
65
+ - 3
66
+ version: 0.7.3
44
67
  type: :development
45
- prerelease: false
46
- version_requirements: *2160754640
47
- - !ruby/object:Gem::Dependency
68
+ version_requirements: *id003
69
+ - !ruby/object:Gem::Dependency
48
70
  name: rake
49
- requirement: &2160754100 !ruby/object:Gem::Requirement
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
50
73
  none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ hash: 3
78
+ segments:
79
+ - 0
80
+ version: "0"
55
81
  type: :development
56
- prerelease: false
57
- version_requirements: *2160754100
58
- - !ruby/object:Gem::Dependency
82
+ version_requirements: *id004
83
+ - !ruby/object:Gem::Dependency
59
84
  name: mongrel
60
- requirement: &2160752320 !ruby/object:Gem::Requirement
85
+ prerelease: false
86
+ requirement: &id005 !ruby/object:Gem::Requirement
61
87
  none: false
62
- requirements:
88
+ requirements:
63
89
  - - ~>
64
- - !ruby/object:Gem::Version
90
+ - !ruby/object:Gem::Version
91
+ hash: 31098129
92
+ segments:
93
+ - 1
94
+ - 2
95
+ - beta
65
96
  version: 1.2.beta
66
97
  type: :development
98
+ version_requirements: *id005
99
+ - !ruby/object:Gem::Dependency
100
+ name: rack
67
101
  prerelease: false
68
- version_requirements: *2160752320
69
- description: ! ' webmachine is a toolkit for building HTTP applications in a declarative
70
- fashion, that avoids the confusion of going through a CGI-style interface like Rack.
71
- It is strongly influenced by the original Erlang project of the same name and shares
72
- its opinionated nature about HTTP. '
73
- email:
102
+ requirement: &id006 !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ hash: 3
108
+ segments:
109
+ - 0
110
+ version: "0"
111
+ type: :development
112
+ version_requirements: *id006
113
+ description: " webmachine is a toolkit for building HTTP applications in a declarative fashion, that avoids the confusion of going through a CGI-style interface like Rack. It is strongly influenced by the original Erlang project of the same name and shares its opinionated nature about HTTP. "
114
+ email:
74
115
  - sean@basho.com
75
116
  executables: []
117
+
76
118
  extensions: []
119
+
77
120
  extra_rdoc_files: []
78
- files:
121
+
122
+ files:
123
+ - doc/_index.html
124
+ - doc/class_list.html
125
+ - doc/css/common.css
126
+ - doc/css/full_list.css
127
+ - doc/css/style.css
128
+ - doc/file.README.html
129
+ - doc/file_list.html
130
+ - doc/frames.html
131
+ - doc/index.html
132
+ - doc/js/app.js
133
+ - doc/js/full_list.js
134
+ - doc/js/jquery.js
135
+ - doc/method_list.html
136
+ - doc/top-level-namespace.html
137
+ - doc/Webmachine/Adapters/Mongrel/Handler.html
138
+ - doc/Webmachine/Adapters/Mongrel.html
139
+ - doc/Webmachine/Adapters/Rack.html
140
+ - doc/Webmachine/Adapters/WEBrick/RequestBody.html
141
+ - doc/Webmachine/Adapters/WEBrick/Server.html
142
+ - doc/Webmachine/Adapters/WEBrick.html
143
+ - doc/Webmachine/Adapters.html
144
+ - doc/Webmachine/CallableEncoder.html
145
+ - doc/Webmachine/ChunkedBody.html
146
+ - doc/Webmachine/Configuration.html
147
+ - doc/Webmachine/Decision/Conneg/MediaTypeList.html
148
+ - doc/Webmachine/Decision/Conneg/PriorityList.html
149
+ - doc/Webmachine/Decision/Conneg.html
150
+ - doc/Webmachine/Decision/Flow.html
151
+ - doc/Webmachine/Decision/FSM.html
152
+ - doc/Webmachine/Decision/Helpers.html
153
+ - doc/Webmachine/Decision.html
154
+ - doc/Webmachine/Dispatcher/Route.html
155
+ - doc/Webmachine/Dispatcher.html
156
+ - doc/Webmachine/EnumerableEncoder.html
157
+ - doc/Webmachine/Error.html
158
+ - doc/Webmachine/FiberEncoder.html
159
+ - doc/Webmachine/Headers.html
160
+ - doc/Webmachine/InvalidResource.html
161
+ - doc/Webmachine/MalformedRequest.html
162
+ - doc/Webmachine/MediaType.html
163
+ - doc/Webmachine/Request.html
164
+ - doc/Webmachine/Resource/Authentication.html
165
+ - doc/Webmachine/Resource/Callbacks.html
166
+ - doc/Webmachine/Resource/Encodings.html
167
+ - doc/Webmachine/Resource.html
168
+ - doc/Webmachine/Response.html
169
+ - doc/Webmachine/StreamingEncoder.html
170
+ - doc/Webmachine/Translation.html
171
+ - doc/Webmachine.html
79
172
  - examples/webrick.rb
80
173
  - Gemfile
81
174
  - Guardfile
82
175
  - lib/webmachine/adapters/mongrel.rb
176
+ - lib/webmachine/adapters/rack.rb
83
177
  - lib/webmachine/adapters/webrick.rb
84
178
  - lib/webmachine/adapters.rb
179
+ - lib/webmachine/chunked_body.rb
85
180
  - lib/webmachine/configuration.rb
86
181
  - lib/webmachine/decision/conneg.rb
87
182
  - lib/webmachine/decision/flow.rb
@@ -91,10 +186,12 @@ files:
91
186
  - lib/webmachine/dispatcher/route.rb
92
187
  - lib/webmachine/dispatcher.rb
93
188
  - lib/webmachine/errors.rb
189
+ - lib/webmachine/fiber18.rb
94
190
  - lib/webmachine/headers.rb
95
191
  - lib/webmachine/locale/en.yml
96
192
  - lib/webmachine/media_type.rb
97
193
  - lib/webmachine/request.rb
194
+ - lib/webmachine/resource/authentication.rb
98
195
  - lib/webmachine/resource/callbacks.rb
99
196
  - lib/webmachine/resource/encodings.rb
100
197
  - lib/webmachine/resource.rb
@@ -102,6 +199,7 @@ files:
102
199
  - lib/webmachine/streaming.rb
103
200
  - lib/webmachine/translation.rb
104
201
  - lib/webmachine/version.rb
202
+ - lib/webmachine/version.rbc
105
203
  - lib/webmachine.rb
106
204
  - pkg/webmachine-0.1.0/examples/webrick.rb
107
205
  - pkg/webmachine-0.1.0/Gemfile
@@ -139,10 +237,91 @@ files:
139
237
  - pkg/webmachine-0.1.0/spec/webmachine/request_spec.rb
140
238
  - pkg/webmachine-0.1.0/webmachine.gemspec
141
239
  - pkg/webmachine-0.1.0.gem
240
+ - pkg/webmachine-0.2.0/examples/webrick.rb
241
+ - pkg/webmachine-0.2.0/Gemfile
242
+ - pkg/webmachine-0.2.0/Guardfile
243
+ - pkg/webmachine-0.2.0/lib/webmachine/adapters/mongrel.rb
244
+ - pkg/webmachine-0.2.0/lib/webmachine/adapters/webrick.rb
245
+ - pkg/webmachine-0.2.0/lib/webmachine/adapters.rb
246
+ - pkg/webmachine-0.2.0/lib/webmachine/configuration.rb
247
+ - pkg/webmachine-0.2.0/lib/webmachine/decision/conneg.rb
248
+ - pkg/webmachine-0.2.0/lib/webmachine/decision/flow.rb
249
+ - pkg/webmachine-0.2.0/lib/webmachine/decision/fsm.rb
250
+ - pkg/webmachine-0.2.0/lib/webmachine/decision/helpers.rb
251
+ - pkg/webmachine-0.2.0/lib/webmachine/decision.rb
252
+ - pkg/webmachine-0.2.0/lib/webmachine/dispatcher/route.rb
253
+ - pkg/webmachine-0.2.0/lib/webmachine/dispatcher.rb
254
+ - pkg/webmachine-0.2.0/lib/webmachine/errors.rb
255
+ - pkg/webmachine-0.2.0/lib/webmachine/headers.rb
256
+ - pkg/webmachine-0.2.0/lib/webmachine/locale/en.yml
257
+ - pkg/webmachine-0.2.0/lib/webmachine/media_type.rb
258
+ - pkg/webmachine-0.2.0/lib/webmachine/request.rb
259
+ - pkg/webmachine-0.2.0/lib/webmachine/resource/callbacks.rb
260
+ - pkg/webmachine-0.2.0/lib/webmachine/resource/encodings.rb
261
+ - pkg/webmachine-0.2.0/lib/webmachine/resource.rb
262
+ - pkg/webmachine-0.2.0/lib/webmachine/response.rb
263
+ - pkg/webmachine-0.2.0/lib/webmachine/streaming.rb
264
+ - pkg/webmachine-0.2.0/lib/webmachine/translation.rb
265
+ - pkg/webmachine-0.2.0/lib/webmachine/version.rb
266
+ - pkg/webmachine-0.2.0/lib/webmachine.rb
267
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/examples/webrick.rb
268
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/Gemfile
269
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/Guardfile
270
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/adapters/webrick.rb
271
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/adapters.rb
272
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/decision/conneg.rb
273
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/decision/flow.rb
274
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/decision/fsm.rb
275
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/decision/helpers.rb
276
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/decision.rb
277
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/dispatcher/route.rb
278
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/dispatcher.rb
279
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/errors.rb
280
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/headers.rb
281
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/locale/en.yml
282
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/request.rb
283
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/resource/callbacks.rb
284
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/resource/encodings.rb
285
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/resource.rb
286
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/response.rb
287
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/streaming.rb
288
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/translation.rb
289
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine/version.rb
290
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/lib/webmachine.rb
291
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/Rakefile
292
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/README.md
293
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/spec/spec_helper.rb
294
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/spec/tests.org
295
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/spec/webmachine/decision/conneg_spec.rb
296
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/spec/webmachine/decision/flow_spec.rb
297
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/spec/webmachine/dispatcher/route_spec.rb
298
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/spec/webmachine/dispatcher_spec.rb
299
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/spec/webmachine/headers_spec.rb
300
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/spec/webmachine/request_spec.rb
301
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0/webmachine.gemspec
302
+ - pkg/webmachine-0.2.0/pkg/webmachine-0.1.0.gem
303
+ - pkg/webmachine-0.2.0/Rakefile
304
+ - pkg/webmachine-0.2.0/README.md
305
+ - pkg/webmachine-0.2.0/spec/spec_helper.rb
306
+ - pkg/webmachine-0.2.0/spec/tests.org
307
+ - pkg/webmachine-0.2.0/spec/webmachine/configuration_spec.rb
308
+ - pkg/webmachine-0.2.0/spec/webmachine/decision/conneg_spec.rb
309
+ - pkg/webmachine-0.2.0/spec/webmachine/decision/flow_spec.rb
310
+ - pkg/webmachine-0.2.0/spec/webmachine/decision/helpers_spec.rb
311
+ - pkg/webmachine-0.2.0/spec/webmachine/dispatcher/route_spec.rb
312
+ - pkg/webmachine-0.2.0/spec/webmachine/dispatcher_spec.rb
313
+ - pkg/webmachine-0.2.0/spec/webmachine/errors_spec.rb
314
+ - pkg/webmachine-0.2.0/spec/webmachine/headers_spec.rb
315
+ - pkg/webmachine-0.2.0/spec/webmachine/media_type_spec.rb
316
+ - pkg/webmachine-0.2.0/spec/webmachine/request_spec.rb
317
+ - pkg/webmachine-0.2.0/webmachine.gemspec
318
+ - pkg/webmachine-0.2.0.gem
142
319
  - Rakefile
143
320
  - README.md
144
321
  - spec/spec_helper.rb
145
322
  - spec/tests.org
323
+ - spec/webmachine/adapters/rack_spec.rb
324
+ - spec/webmachine/chunked_body_spec.rb
146
325
  - spec/webmachine/configuration_spec.rb
147
326
  - spec/webmachine/decision/conneg_spec.rb
148
327
  - spec/webmachine/decision/flow_spec.rb
@@ -153,35 +332,48 @@ files:
153
332
  - spec/webmachine/headers_spec.rb
154
333
  - spec/webmachine/media_type_spec.rb
155
334
  - spec/webmachine/request_spec.rb
335
+ - spec/webmachine/resource/authentication_spec.rb
156
336
  - webmachine.gemspec
157
337
  - .gitignore
338
+ has_rdoc: true
158
339
  homepage: http://github.com/seancribbs/webmachine-ruby
159
340
  licenses: []
341
+
160
342
  post_install_message:
161
343
  rdoc_options: []
162
- require_paths:
344
+
345
+ require_paths:
163
346
  - lib
164
- required_ruby_version: !ruby/object:Gem::Requirement
347
+ required_ruby_version: !ruby/object:Gem::Requirement
165
348
  none: false
166
- requirements:
167
- - - ! '>='
168
- - !ruby/object:Gem::Version
169
- version: '0'
170
- required_rubygems_version: !ruby/object:Gem::Requirement
349
+ requirements:
350
+ - - ">="
351
+ - !ruby/object:Gem::Version
352
+ hash: 3
353
+ segments:
354
+ - 0
355
+ version: "0"
356
+ required_rubygems_version: !ruby/object:Gem::Requirement
171
357
  none: false
172
- requirements:
173
- - - ! '>='
174
- - !ruby/object:Gem::Version
175
- version: '0'
358
+ requirements:
359
+ - - ">="
360
+ - !ruby/object:Gem::Version
361
+ hash: 3
362
+ segments:
363
+ - 0
364
+ version: "0"
176
365
  requirements: []
366
+
177
367
  rubyforge_project:
178
- rubygems_version: 1.8.6
368
+ rubygems_version: 1.6.2
179
369
  signing_key:
180
370
  specification_version: 3
181
371
  summary: webmachine is a toolkit for building HTTP applications,
182
- test_files:
372
+ test_files:
183
373
  - spec/spec_helper.rb
184
374
  - spec/tests.org
375
+ - spec/webmachine/adapters/rack_spec.rb
376
+ - spec/webmachine/chunked_body_spec.rb
185
377
  - spec/webmachine/configuration_spec.rb
186
378
  - spec/webmachine/decision/conneg_spec.rb
187
379
  - spec/webmachine/decision/flow_spec.rb
@@ -192,4 +384,5 @@ test_files:
192
384
  - spec/webmachine/headers_spec.rb
193
385
  - spec/webmachine/media_type_spec.rb
194
386
  - spec/webmachine/request_spec.rb
387
+ - spec/webmachine/resource/authentication_spec.rb
195
388
  - .gitignore