goliath 0.9.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of goliath might be problematic. Click here for more details.

Files changed (49) hide show
  1. data/.gemtest +0 -0
  2. data/.gitignore +12 -9
  3. data/README.md +4 -5
  4. data/Rakefile +1 -0
  5. data/examples/activerecord/srv.rb +0 -2
  6. data/examples/async_upload.rb +0 -4
  7. data/examples/conf_test.rb +0 -1
  8. data/examples/config/content_stream.rb +33 -0
  9. data/examples/config/http_log.rb +7 -5
  10. data/examples/content_stream.rb +41 -0
  11. data/examples/echo.rb +1 -5
  12. data/examples/http_log.rb +0 -1
  13. data/examples/valid.rb +0 -4
  14. data/goliath.gemspec +3 -1
  15. data/lib/goliath/api.rb +12 -3
  16. data/lib/goliath/application.rb +5 -1
  17. data/lib/goliath/connection.rb +1 -2
  18. data/lib/goliath/constants.rb +2 -1
  19. data/lib/goliath/env.rb +7 -0
  20. data/lib/goliath/goliath.rb +8 -8
  21. data/lib/goliath/rack/params.rb +25 -2
  22. data/lib/goliath/request.rb +13 -3
  23. data/lib/goliath/runner.rb +7 -1
  24. data/lib/goliath/server.rb +6 -7
  25. data/lib/goliath/test_helper.rb +10 -4
  26. data/lib/goliath/version.rb +1 -1
  27. data/spec/integration/async_request_processing.rb +0 -2
  28. data/spec/integration/echo_spec.rb +37 -2
  29. data/spec/integration/empty_body_spec.rb +20 -0
  30. data/spec/integration/http_log_spec.rb +138 -0
  31. data/spec/integration/keepalive_spec.rb +0 -2
  32. data/spec/integration/pipelining_spec.rb +0 -2
  33. data/spec/integration/reloader_spec.rb +43 -0
  34. data/spec/integration/valid_spec.rb +0 -2
  35. data/spec/spec_helper.rb +6 -0
  36. data/spec/unit/env_spec.rb +2 -2
  37. data/spec/unit/rack/formatters/json_spec.rb +2 -2
  38. data/spec/unit/rack/formatters/xml_spec.rb +3 -3
  39. data/spec/unit/rack/heartbeat_spec.rb +1 -1
  40. data/spec/unit/rack/params_spec.rb +66 -3
  41. data/spec/unit/rack/render_spec.rb +1 -1
  42. data/spec/unit/rack/validation/default_params_spec.rb +3 -3
  43. data/spec/unit/rack/validation/numeric_range_spec.rb +3 -3
  44. data/spec/unit/rack/validation/request_method_spec.rb +1 -1
  45. data/spec/unit/rack/validation/required_param_spec.rb +2 -2
  46. data/spec/unit/rack/validation/required_value_spec.rb +2 -2
  47. data/spec/unit/rack/validation_error_spec.rb +1 -1
  48. data/spec/unit/request_spec.rb +23 -4
  49. metadata +39 -65
@@ -4,7 +4,7 @@ require 'nokogiri'
4
4
 
5
5
  describe Goliath::Rack::Formatters::XML do
6
6
  it 'accepts an app' do
7
- lambda { Goliath::Rack::Formatters::XML.new('my app') }.should_not raise_error Exception
7
+ lambda { Goliath::Rack::Formatters::XML.new('my app') }.should_not raise_error
8
8
  end
9
9
 
10
10
  describe 'with a formatter' do
@@ -31,7 +31,7 @@ describe Goliath::Rack::Formatters::XML do
31
31
  @app.should_receive(:call).and_return([200, {'Content-Type' => 'application/xml'}, {:a => 1, :b => 2}])
32
32
 
33
33
  status, header, body = @xml.call({})
34
- lambda { Nokogiri.parse(body.first).search('a').inner_text.should == '1' }.should_not raise_error Exception
34
+ lambda { Nokogiri.parse(body.first).search('a').inner_text.should == '1' }.should_not raise_error
35
35
  end
36
36
 
37
37
  it 'generates arrays correctly' do
@@ -42,7 +42,7 @@ describe Goliath::Rack::Formatters::XML do
42
42
  doc = Nokogiri.parse(body.first)
43
43
  doc.search('item').first.inner_text.should == '1'
44
44
  doc.search('item').last.inner_text.should == '2'
45
- }.should_not raise_error Exception
45
+ }.should_not raise_error
46
46
  end
47
47
 
48
48
  it "doesn't format to xml if the type is not application/xml" do
@@ -4,7 +4,7 @@ require 'goliath/env'
4
4
 
5
5
  describe Goliath::Rack::Heartbeat do
6
6
  it 'accepts an app' do
7
- lambda { Goliath::Rack::Heartbeat.new('my app') }.should_not raise_error(Exception)
7
+ lambda { Goliath::Rack::Heartbeat.new('my app') }.should_not raise_error
8
8
  end
9
9
 
10
10
  describe 'with the middleware' do
@@ -3,13 +3,14 @@ require 'goliath/rack/params'
3
3
 
4
4
  describe Goliath::Rack::Params do
5
5
  it 'accepts an app' do
6
- lambda { Goliath::Rack::Params.new('my app') }.should_not raise_error(Exception)
6
+ lambda { Goliath::Rack::Params.new('my app') }.should_not raise_error
7
7
  end
8
8
 
9
9
  describe 'with middleware' do
10
10
  before(:each) do
11
11
  @app = mock('app').as_null_object
12
12
  @env = {}
13
+ @env['CONTENT_TYPE'] = 'application/x-www-form-urlencoded; charset=utf-8'
13
14
  @params = Goliath::Rack::Params.new(@app)
14
15
  end
15
16
 
@@ -21,18 +22,26 @@ describe Goliath::Rack::Params do
21
22
  ret['baz'].should == 'bonkey'
22
23
  end
23
24
 
25
+ it 'parses the nested query string' do
26
+ @env['QUERY_STRING'] = 'foo[bar]=baz'
27
+
28
+ ret = @params.retrieve_params(@env)
29
+ ret['foo'].should == {'bar' => 'baz'}
30
+ end
31
+
24
32
  it 'parses the post body' do
25
33
  @env['rack.input'] = StringIO.new
26
- @env['rack.input'] << "foo=bar&baz=bonkey"
34
+ @env['rack.input'] << "foo=bar&baz=bonkey&zonk[donk]=monk"
27
35
  @env['rack.input'].rewind
28
36
 
29
37
  ret = @params.retrieve_params(@env)
30
38
  ret['foo'].should == 'bar'
31
39
  ret['baz'].should == 'bonkey'
40
+ ret['zonk'].should == {'donk' => 'monk'}
32
41
  end
33
42
 
34
43
  it 'parses arrays of data' do
35
- @env['QUERY_STRING'] = 'foo=bar&foo=baz&foo=foos'
44
+ @env['QUERY_STRING'] = 'foo[]=bar&foo[]=baz&foo[]=foos'
36
45
 
37
46
  ret = @params.retrieve_params(@env)
38
47
  ret['foo'].is_a?(Array).should be_true
@@ -40,6 +49,27 @@ describe Goliath::Rack::Params do
40
49
  ret['foo'].should == %w(bar baz foos)
41
50
  end
42
51
 
52
+ it 'parses multipart data' do
53
+ @env[Goliath::Constants::CONTENT_TYPE] = 'multipart/boundary="AaB03x"'
54
+ @env['rack.input'] = StringIO.new
55
+ @env['rack.input'] <<"--AaB03x\r
56
+ Content-Disposition: form-data; name=\"submit-name\"\r
57
+ \r
58
+ Larry\r
59
+ --AaB03x\r
60
+ Content-Disposition: form-data; name=\"submit-name-with-content\"\r
61
+ \r
62
+ Berry\r
63
+ --AaB03x--\r
64
+ "
65
+
66
+ @env[Goliath::Constants::CONTENT_LENGTH] = @env['rack.input'].length
67
+
68
+ ret = @params.retrieve_params(@env)
69
+ ret['submit-name'].should == 'Larry'
70
+ ret['submit-name-with-content'].should == 'Berry'
71
+ end
72
+
43
73
  it 'combines query string and post body params' do
44
74
  @env['QUERY_STRING'] = "baz=bar"
45
75
 
@@ -90,5 +120,38 @@ describe Goliath::Rack::Params do
90
120
  headers.should == app_headers
91
121
  body.should == app_body
92
122
  end
123
+
124
+ context 'content type' do
125
+ it "parses application/x-www-form-urlencoded" do
126
+ @env['CONTENT_TYPE'] = 'application/x-www-form-urlencoded; charset=utf-8'
127
+ @env['rack.input'] = StringIO.new
128
+ @env['rack.input'] << "foos=bonkey"
129
+ @env['rack.input'].rewind
130
+
131
+ ret = @params.retrieve_params(@env)
132
+ ret['foos'].should == 'bonkey'
133
+ end
134
+
135
+ it "parses json" do
136
+ @env['CONTENT_TYPE'] = 'application/json'
137
+ @env['rack.input'] = StringIO.new
138
+ @env['rack.input'] << %|{"foo":"bar"}|
139
+ @env['rack.input'].rewind
140
+
141
+ ret = @params.retrieve_params(@env)
142
+ ret['foo'].should == 'bar'
143
+ end
144
+
145
+
146
+ it "doesn't parse unknown content types" do
147
+ @env['CONTENT_TYPE'] = 'fake/form -- type'
148
+ @env['rack.input'] = StringIO.new
149
+ @env['rack.input'] << %|{"foo":"bar"}|
150
+ @env['rack.input'].rewind
151
+
152
+ ret = @params.retrieve_params(@env)
153
+ ret.should == {}
154
+ end
155
+ end
93
156
  end
94
157
  end
@@ -13,7 +13,7 @@ describe Goliath::Rack::Render do
13
13
  let(:render) { Goliath::Rack::Render.new(app) }
14
14
 
15
15
  it 'accepts an app' do
16
- lambda { Goliath::Rack::Render.new('my app') }.should_not raise_error(Exception)
16
+ lambda { Goliath::Rack::Render.new('my app') }.should_not raise_error
17
17
  end
18
18
 
19
19
  it 'returns the status, body and app headers' do
@@ -4,15 +4,15 @@ require 'goliath/rack/validation/default_params'
4
4
  describe Goliath::Rack::Validation::DefaultParams do
5
5
  it 'accepts an app' do
6
6
  opts = {:defaults => ['title'], :key => 'fields'}
7
- lambda { Goliath::Rack::Validation::DefaultParams.new('my app', opts) }.should_not raise_error(Exception)
7
+ lambda { Goliath::Rack::Validation::DefaultParams.new('my app', opts) }.should_not raise_error
8
8
  end
9
9
 
10
10
  it 'requires defaults to be set' do
11
- lambda { Goliath::Rack::Validation::DefaultParams.new('my app', {:key => 'test'}) }.should raise_error(Exception)
11
+ lambda { Goliath::Rack::Validation::DefaultParams.new('my app', {:key => 'test'}) }.should raise_error
12
12
  end
13
13
 
14
14
  it 'requires key to be set' do
15
- lambda { Goliath::Rack::Validation::DefaultParams.new('my app', {:defaults => 'test'}) }.should raise_error(Exception)
15
+ lambda { Goliath::Rack::Validation::DefaultParams.new('my app', {:defaults => 'test'}) }.should raise_error
16
16
  end
17
17
 
18
18
  describe 'with middleware' do
@@ -9,7 +9,7 @@ describe Goliath::Rack::Validation::NumericRange do
9
9
 
10
10
  it 'accepts options on create' do
11
11
  opts = { :min => 1, :key => 2 }
12
- lambda { Goliath::Rack::Validation::NumericRange.new('my app', opts) }.should_not raise_error(Exception)
12
+ lambda { Goliath::Rack::Validation::NumericRange.new('my app', opts) }.should_not raise_error
13
13
  end
14
14
 
15
15
  describe 'with middleware' do
@@ -59,11 +59,11 @@ describe Goliath::Rack::Validation::NumericRange do
59
59
  end
60
60
 
61
61
  it 'raises error if key is not set' do
62
- lambda { Goliath::Rack::Validation::NumericRange.new('app', {:min => 5}) }.should raise_error(Exception)
62
+ lambda { Goliath::Rack::Validation::NumericRange.new('app', {:min => 5}) }.should raise_error
63
63
  end
64
64
 
65
65
  it 'raises error if neither min nor max set' do
66
- lambda { Goliath::Rack::Validation::NumericRange.new('app', {:key => 5}) }.should raise_error(Exception)
66
+ lambda { Goliath::Rack::Validation::NumericRange.new('app', {:key => 5}) }.should raise_error
67
67
  end
68
68
 
69
69
  it 'uses min if default not set' do
@@ -7,7 +7,7 @@ describe Goliath::Rack::Validation::RequestMethod do
7
7
  end
8
8
 
9
9
  it 'accepts an app' do
10
- lambda { Goliath::Rack::Validation::RequestMethod.new('my app') }.should_not raise_error(Exception)
10
+ lambda { Goliath::Rack::Validation::RequestMethod.new('my app') }.should_not raise_error
11
11
  end
12
12
 
13
13
  describe 'with defaults' do
@@ -3,12 +3,12 @@ require 'goliath/rack/validation/required_param'
3
3
 
4
4
  describe Goliath::Rack::Validation::RequiredParam do
5
5
  it 'accepts an app' do
6
- lambda { Goliath::Rack::Validation::RequiredParam.new('my app') }.should_not raise_error(Exception)
6
+ lambda { Goliath::Rack::Validation::RequiredParam.new('my app') }.should_not raise_error
7
7
  end
8
8
 
9
9
  it 'accepts options on create' do
10
10
  opts = { :type => 1, :key => 2 }
11
- lambda { Goliath::Rack::Validation::RequiredParam.new('my app', opts) }.should_not raise_error(Exception)
11
+ lambda { Goliath::Rack::Validation::RequiredParam.new('my app', opts) }.should_not raise_error
12
12
  end
13
13
 
14
14
  it 'defaults type and key' do
@@ -3,12 +3,12 @@ require 'goliath/rack/validation/required_value'
3
3
 
4
4
  describe Goliath::Rack::Validation::RequiredValue do
5
5
  it 'accepts an app' do
6
- lambda { Goliath::Rack::Validation::RequiredValue.new('my app') }.should_not raise_error(Exception)
6
+ lambda { Goliath::Rack::Validation::RequiredValue.new('my app') }.should_not raise_error
7
7
  end
8
8
 
9
9
  it 'accepts options on create' do
10
10
  opts = { :key => 2, :values => ["foo", "bar"] }
11
- lambda { Goliath::Rack::Validation::RequiredValue.new('my app', opts) }.should_not raise_error(Exception)
11
+ lambda { Goliath::Rack::Validation::RequiredValue.new('my app', opts) }.should_not raise_error
12
12
  end
13
13
 
14
14
 
@@ -3,7 +3,7 @@ require 'goliath/rack/validation_error'
3
3
 
4
4
  describe Goliath::Rack::ValidationError do
5
5
  it 'accepts an app' do
6
- lambda { Goliath::Rack::ValidationError.new('my app') }.should_not raise_error(Exception)
6
+ lambda { Goliath::Rack::ValidationError.new('my app') }.should_not raise_error
7
7
  end
8
8
 
9
9
  describe 'with middleware' do
@@ -2,7 +2,6 @@ require 'spec_helper'
2
2
 
3
3
  describe Goliath::Request do
4
4
  before(:each) do
5
-
6
5
  app = mock('app').as_null_object
7
6
  env = Goliath::Env.new
8
7
 
@@ -10,7 +9,6 @@ describe Goliath::Request do
10
9
  end
11
10
 
12
11
  describe 'initialization' do
13
-
14
12
  it 'initializes env defaults' do
15
13
  env = Goliath::Env.new
16
14
  env['INIT'] = 'init'
@@ -29,7 +27,6 @@ describe Goliath::Request do
29
27
  end
30
28
 
31
29
  describe 'process' do
32
-
33
30
  it 'executes the application' do
34
31
  app_mock = mock('app').as_null_object
35
32
  env_mock = mock('app').as_null_object
@@ -40,7 +37,6 @@ describe Goliath::Request do
40
37
 
41
38
  request.process
42
39
  end
43
-
44
40
  end
45
41
 
46
42
  describe 'finished?' do
@@ -54,6 +50,29 @@ describe Goliath::Request do
54
50
 
55
51
  @r.finished?.should be_true
56
52
  end
53
+ end
54
+
55
+ describe 'parse_headers' do
56
+ it 'sets content_type correctly' do
57
+ parser = mock('parser').as_null_object
57
58
 
59
+ @r.parse_header({'Content-Type' => 'text/plain'}, parser)
60
+ @r.env['CONTENT_TYPE'].should == 'text/plain'
61
+ end
62
+
63
+ it 'sets content_length correctly' do
64
+ parser = mock('parser').as_null_object
65
+
66
+ @r.parse_header({'Content-Length' => 42}, parser)
67
+ @r.env['CONTENT_LENGTH'].should == 42
68
+ end
69
+
70
+ it 'sets server_name and server_port correctly' do
71
+ parser = mock('parser').as_null_object
72
+
73
+ @r.parse_header({'Host' => 'myhost.com:3000'}, parser)
74
+ @r.env['SERVER_NAME'].should == 'myhost.com'
75
+ @r.env['SERVER_PORT'].should == '3000'
76
+ end
58
77
  end
59
78
  end
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: goliath
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 9
8
- - 0
9
- version: 0.9.0
4
+ prerelease:
5
+ version: 0.9.1
10
6
  platform: ruby
11
7
  authors:
12
8
  - dan sinclair
@@ -15,7 +11,7 @@ autorequire:
15
11
  bindir: bin
16
12
  cert_chain: []
17
13
 
18
- date: 2011-03-08 00:00:00 -05:00
14
+ date: 2011-04-11 00:00:00 -04:00
19
15
  default_executable:
20
16
  dependencies:
21
17
  - !ruby/object:Gem::Dependency
@@ -26,12 +22,6 @@ dependencies:
26
22
  requirements:
27
23
  - - ">="
28
24
  - !ruby/object:Gem::Version
29
- segments:
30
- - 1
31
- - 0
32
- - 0
33
- - beta
34
- - 1
35
25
  version: 1.0.0.beta.1
36
26
  type: :runtime
37
27
  version_requirements: *id001
@@ -43,12 +33,6 @@ dependencies:
43
33
  requirements:
44
34
  - - ">="
45
35
  - !ruby/object:Gem::Version
46
- segments:
47
- - 0
48
- - 3
49
- - 0
50
- - beta
51
- - 1
52
36
  version: 0.3.0.beta.1
53
37
  type: :runtime
54
38
  version_requirements: *id002
@@ -60,8 +44,6 @@ dependencies:
60
44
  requirements:
61
45
  - - ">="
62
46
  - !ruby/object:Gem::Version
63
- segments:
64
- - 0
65
47
  version: "0"
66
48
  type: :runtime
67
49
  version_requirements: *id003
@@ -73,8 +55,6 @@ dependencies:
73
55
  requirements:
74
56
  - - ">="
75
57
  - !ruby/object:Gem::Version
76
- segments:
77
- - 0
78
58
  version: "0"
79
59
  type: :runtime
80
60
  version_requirements: *id004
@@ -86,9 +66,7 @@ dependencies:
86
66
  requirements:
87
67
  - - ">="
88
68
  - !ruby/object:Gem::Version
89
- segments:
90
- - 0
91
- version: "0"
69
+ version: 1.2.2
92
70
  type: :runtime
93
71
  version_requirements: *id005
94
72
  - !ruby/object:Gem::Dependency
@@ -99,8 +77,6 @@ dependencies:
99
77
  requirements:
100
78
  - - ">="
101
79
  - !ruby/object:Gem::Version
102
- segments:
103
- - 0
104
80
  version: "0"
105
81
  type: :runtime
106
82
  version_requirements: *id006
@@ -112,8 +88,6 @@ dependencies:
112
88
  requirements:
113
89
  - - ">="
114
90
  - !ruby/object:Gem::Version
115
- segments:
116
- - 0
117
91
  version: "0"
118
92
  type: :runtime
119
93
  version_requirements: *id007
@@ -125,8 +99,6 @@ dependencies:
125
99
  requirements:
126
100
  - - ">="
127
101
  - !ruby/object:Gem::Version
128
- segments:
129
- - 0
130
102
  version: "0"
131
103
  type: :runtime
132
104
  version_requirements: *id008
@@ -138,8 +110,6 @@ dependencies:
138
110
  requirements:
139
111
  - - ">="
140
112
  - !ruby/object:Gem::Version
141
- segments:
142
- - 0
143
113
  version: "0"
144
114
  type: :runtime
145
115
  version_requirements: *id009
@@ -151,9 +121,6 @@ dependencies:
151
121
  requirements:
152
122
  - - ">"
153
123
  - !ruby/object:Gem::Version
154
- segments:
155
- - 2
156
- - 0
157
124
  version: "2.0"
158
125
  type: :development
159
126
  version_requirements: *id010
@@ -165,8 +132,6 @@ dependencies:
165
132
  requirements:
166
133
  - - ">="
167
134
  - !ruby/object:Gem::Version
168
- segments:
169
- - 0
170
135
  version: "0"
171
136
  type: :development
172
137
  version_requirements: *id011
@@ -178,12 +143,6 @@ dependencies:
178
143
  requirements:
179
144
  - - ">="
180
145
  - !ruby/object:Gem::Version
181
- segments:
182
- - 1
183
- - 0
184
- - 0
185
- - beta
186
- - 1
187
146
  version: 1.0.0.beta.1
188
147
  type: :development
189
148
  version_requirements: *id012
@@ -195,8 +154,6 @@ dependencies:
195
154
  requirements:
196
155
  - - ">="
197
156
  - !ruby/object:Gem::Version
198
- segments:
199
- - 0
200
157
  version: "0"
201
158
  type: :development
202
159
  version_requirements: *id013
@@ -208,8 +165,6 @@ dependencies:
208
165
  requirements:
209
166
  - - ">="
210
167
  - !ruby/object:Gem::Version
211
- segments:
212
- - 0
213
168
  version: "0"
214
169
  type: :development
215
170
  version_requirements: *id014
@@ -221,37 +176,53 @@ dependencies:
221
176
  requirements:
222
177
  - - ">="
223
178
  - !ruby/object:Gem::Version
224
- segments:
225
- - 0
226
179
  version: "0"
227
180
  type: :development
228
181
  version_requirements: *id015
229
182
  - !ruby/object:Gem::Dependency
230
- name: yard
183
+ name: multipart_body
231
184
  prerelease: false
232
185
  requirement: &id016 !ruby/object:Gem::Requirement
233
186
  none: false
234
187
  requirements:
235
188
  - - ">="
236
189
  - !ruby/object:Gem::Version
237
- segments:
238
- - 0
239
190
  version: "0"
240
191
  type: :development
241
192
  version_requirements: *id016
242
193
  - !ruby/object:Gem::Dependency
243
- name: bluecloth
194
+ name: amqp
244
195
  prerelease: false
245
196
  requirement: &id017 !ruby/object:Gem::Requirement
246
197
  none: false
247
198
  requirements:
248
199
  - - ">="
249
200
  - !ruby/object:Gem::Version
250
- segments:
251
- - 0
252
- version: "0"
201
+ version: 0.7.1
253
202
  type: :development
254
203
  version_requirements: *id017
204
+ - !ruby/object:Gem::Dependency
205
+ name: yard
206
+ prerelease: false
207
+ requirement: &id018 !ruby/object:Gem::Requirement
208
+ none: false
209
+ requirements:
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ version: "0"
213
+ type: :development
214
+ version_requirements: *id018
215
+ - !ruby/object:Gem::Dependency
216
+ name: bluecloth
217
+ prerelease: false
218
+ requirement: &id019 !ruby/object:Gem::Requirement
219
+ none: false
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: "0"
224
+ type: :development
225
+ version_requirements: *id019
255
226
  description: Framework for writing API servers
256
227
  email:
257
228
  - dj2@everburning.com
@@ -263,6 +234,7 @@ extensions: []
263
234
  extra_rdoc_files: []
264
235
 
265
236
  files:
237
+ - .gemtest
266
238
  - .gitignore
267
239
  - .rspec
268
240
  - .yardopts
@@ -275,9 +247,11 @@ files:
275
247
  - examples/async_upload.rb
276
248
  - examples/conf_test.rb
277
249
  - examples/config/conf_test.rb
250
+ - examples/config/content_stream.rb
278
251
  - examples/config/echo.rb
279
252
  - examples/config/http_log.rb
280
253
  - examples/config/shared.rb
254
+ - examples/content_stream.rb
281
255
  - examples/custom_server.rb
282
256
  - examples/echo.rb
283
257
  - examples/gziped.rb
@@ -322,8 +296,11 @@ files:
322
296
  - lib/goliath/version.rb
323
297
  - spec/integration/async_request_processing.rb
324
298
  - spec/integration/echo_spec.rb
299
+ - spec/integration/empty_body_spec.rb
300
+ - spec/integration/http_log_spec.rb
325
301
  - spec/integration/keepalive_spec.rb
326
302
  - spec/integration/pipelining_spec.rb
303
+ - spec/integration/reloader_spec.rb
327
304
  - spec/integration/valid_spec.rb
328
305
  - spec/spec_helper.rb
329
306
  - spec/unit/connection_spec.rb
@@ -360,31 +337,28 @@ required_ruby_version: !ruby/object:Gem::Requirement
360
337
  requirements:
361
338
  - - ">="
362
339
  - !ruby/object:Gem::Version
363
- segments:
364
- - 1
365
- - 9
366
- - 2
367
340
  version: 1.9.2
368
341
  required_rubygems_version: !ruby/object:Gem::Requirement
369
342
  none: false
370
343
  requirements:
371
344
  - - ">="
372
345
  - !ruby/object:Gem::Version
373
- segments:
374
- - 0
375
346
  version: "0"
376
347
  requirements: []
377
348
 
378
349
  rubyforge_project:
379
- rubygems_version: 1.3.7
350
+ rubygems_version: 1.6.2
380
351
  signing_key:
381
352
  specification_version: 3
382
353
  summary: Framework for writing API servers
383
354
  test_files:
384
355
  - spec/integration/async_request_processing.rb
385
356
  - spec/integration/echo_spec.rb
357
+ - spec/integration/empty_body_spec.rb
358
+ - spec/integration/http_log_spec.rb
386
359
  - spec/integration/keepalive_spec.rb
387
360
  - spec/integration/pipelining_spec.rb
361
+ - spec/integration/reloader_spec.rb
388
362
  - spec/integration/valid_spec.rb
389
363
  - spec/spec_helper.rb
390
364
  - spec/unit/connection_spec.rb