webmachine 0.2.0 → 0.3.0
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.
- data/Gemfile +11 -7
- data/Guardfile +1 -1
- data/README.md +88 -36
- data/Rakefile +10 -0
- data/lib/webmachine/adapters/mongrel.rb +9 -13
- data/lib/webmachine/adapters/rack.rb +50 -0
- data/lib/webmachine/adapters/webrick.rb +2 -0
- data/lib/webmachine/chunked_body.rb +43 -0
- data/lib/webmachine/decision/conneg.rb +2 -1
- data/lib/webmachine/decision/flow.rb +4 -2
- data/lib/webmachine/decision/helpers.rb +4 -0
- data/lib/webmachine/dispatcher.rb +15 -2
- data/lib/webmachine/dispatcher/route.rb +4 -0
- data/lib/webmachine/fiber18.rb +88 -0
- data/lib/webmachine/headers.rb +16 -1
- data/lib/webmachine/media_type.rb +3 -0
- data/lib/webmachine/request.rb +17 -7
- data/lib/webmachine/resource.rb +2 -1
- data/lib/webmachine/resource/authentication.rb +35 -0
- data/lib/webmachine/resource/callbacks.rb +15 -10
- data/lib/webmachine/response.rb +5 -4
- data/lib/webmachine/streaming.rb +44 -8
- data/lib/webmachine/translation.rb +7 -0
- data/lib/webmachine/version.rb +5 -1
- data/spec/tests.org +24 -1
- data/spec/webmachine/adapters/rack_spec.rb +64 -0
- data/spec/webmachine/chunked_body_spec.rb +30 -0
- data/spec/webmachine/decision/helpers_spec.rb +11 -0
- data/spec/webmachine/dispatcher_spec.rb +13 -0
- data/spec/webmachine/request_spec.rb +5 -0
- data/spec/webmachine/resource/authentication_spec.rb +68 -0
- data/webmachine.gemspec +6 -3
- metadata +251 -58
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.
|
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.
|
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.
|
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
|
-
|
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
|
-
|
13
|
-
|
14
|
-
|
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
|
-
|
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
|
-
|
24
|
-
|
25
|
-
- !ruby/object:Gem::Dependency
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
26
38
|
name: rspec
|
27
|
-
|
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
|
-
|
35
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
52
|
+
version_requirements: *id002
|
53
|
+
- !ruby/object:Gem::Dependency
|
37
54
|
name: yard
|
38
|
-
|
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
|
-
|
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
|
-
|
46
|
-
|
47
|
-
- !ruby/object:Gem::Dependency
|
68
|
+
version_requirements: *id003
|
69
|
+
- !ruby/object:Gem::Dependency
|
48
70
|
name: rake
|
49
|
-
|
71
|
+
prerelease: false
|
72
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
50
73
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
hash: 3
|
78
|
+
segments:
|
79
|
+
- 0
|
80
|
+
version: "0"
|
55
81
|
type: :development
|
56
|
-
|
57
|
-
|
58
|
-
- !ruby/object:Gem::Dependency
|
82
|
+
version_requirements: *id004
|
83
|
+
- !ruby/object:Gem::Dependency
|
59
84
|
name: mongrel
|
60
|
-
|
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
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
170
|
-
|
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
|
-
|
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.
|
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
|