hobbit 0.4.4 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0ad21a4064eb73894490f6439b24759e4e205152
4
- data.tar.gz: a39b6f89449f3f610b8ea689a9be411640491834
3
+ metadata.gz: 944ab35171d45442e32e96a5587753f37ed50f0d
4
+ data.tar.gz: c1e65e014055647553c5eaf4e9c055f8cb43afe5
5
5
  SHA512:
6
- metadata.gz: f0d3165b578580625915845cc1c681c03edfcc6a9ab8aae7a8ef9cc009152fc533592be8479741f628ba65970562e9210cb771bd1c313fae13f309b7f29f7b17
7
- data.tar.gz: f0ae8fb5175333c1bb06484141e0609cb34c0340315cef48c95fb79227529284cf657d15eabe49ce4b23d9cb63055791f70f6f4ba1754a42e0e0058f9d598228
6
+ metadata.gz: 6b5d57ba581c5676c1670f8eb6cece3d7442cf0a9d286d8848dc7726b806a493217c0ed8de6133da3c8596156e40f08e23bef60cab889c2915b1dd36972bd362
7
+ data.tar.gz: 995bf2aeb75e3a5f6116aad7715d5d4cffd92f84d0bd1cc58c9a36593ee604c678487f313f8912aae68b66a80a60db18c15951743391f9e28322a3848a914095
@@ -1,3 +1,12 @@
1
+ # 0.5.0
2
+
3
+ * Refactor `Hobbit::Base#halt`. It now sets the status, merges the headers and
4
+ writes the body (using `Hobbit::Response#write`) when given a fixnum, a hash or
5
+ a string.
6
+ * `Hobbit::Response` headers and body are not accessors anymore. This is
7
+ because when you set the body directly, the `Content-Length` is not calculated
8
+ (it's calculated on `#write`).
9
+
1
10
  # 0.4.4
2
11
 
3
12
  * Refactor `Hobbit::Response`.
data/README.md CHANGED
@@ -176,8 +176,8 @@ end
176
176
 
177
177
  #### Halting
178
178
 
179
- To immediately stop a request within a filter or route you must specify the
180
- status:
179
+ To immediately stop a request within route you can use `halt`. You can also
180
+ specify a status:
181
181
 
182
182
  ```ruby
183
183
  require 'hobbit'
@@ -195,7 +195,7 @@ class App < Hobbit::Base
195
195
  end
196
196
  ```
197
197
 
198
- And also you can add a body:
198
+ Or body:
199
199
 
200
200
  ```ruby
201
201
  require 'hobbit'
@@ -208,7 +208,7 @@ class App < Hobbit::Base
208
208
  end
209
209
 
210
210
  get '/' do
211
- halt 401, body: 'This will be the body' unless session['user_id']
211
+ halt 401, 'This will be the body' unless session['user_id']
212
212
  end
213
213
  end
214
214
  ```
@@ -226,7 +226,7 @@ class App < Hobbit::Base
226
226
  end
227
227
 
228
228
  get '/' do
229
- halt 401, headers: { 'Content-Type' => 'text/html; charset=utf-8' }
229
+ halt 401, { 'Content-Type' => 'text/html; charset=utf-8' }
230
230
  end
231
231
  end
232
232
  ```
@@ -244,7 +244,7 @@ class App < Hobbit::Base
244
244
  end
245
245
 
246
246
  get '/' do
247
- halt 401, headers: { 'Content-Type' => 'text/html; charset=utf-8' }, body: 'Woops'
247
+ halt 401, { 'Content-Type' => 'text/html; charset=utf-8' }, 'Woops'
248
248
  end
249
249
  end
250
250
  ```
@@ -55,16 +55,10 @@ module Hobbit
55
55
  @response.finish
56
56
  end
57
57
 
58
- # Stops the execution and returns a response.
59
- #
60
- # @param status [Fixnum] HTTP status code.
61
- # @param headers [Hash] Response headers.
62
- # @param body [Array] Response body.
63
- # @return [Hobbit::Response] The Response.
64
- def halt(status, headers: {}, body: [])
65
- response.status = status
66
- response.headers = headers
67
- response.body = Array(body)
58
+ def halt(*res)
59
+ response.status = res.detect { |s| s.is_a? Fixnum } || 200
60
+ response.headers.merge! res.detect { |h| h.is_a? Hash } || {}
61
+ response.write res.detect { |b| b.is_a? String } || ''
68
62
 
69
63
  throw :halt, response
70
64
  end
@@ -2,7 +2,8 @@ require 'forwardable'
2
2
 
3
3
  module Hobbit
4
4
  class Response
5
- attr_accessor :body, :headers, :status
5
+ attr_accessor :status
6
+ attr_reader :headers, :body
6
7
  extend Forwardable
7
8
  def_delegators :headers, :[], :[]=
8
9
 
@@ -15,7 +16,7 @@ module Hobbit
15
16
  elsif body.respond_to? :each
16
17
  body.each { |i| write i.to_s }
17
18
  else
18
- raise TypeError, 'body must #respond_to? :to_str or :each'
19
+ raise TypeError, 'body must #respond_to? #to_str or #each'
19
20
  end
20
21
  end
21
22
 
@@ -1,3 +1,3 @@
1
1
  module Hobbit
2
- VERSION = '0.4.4'
2
+ VERSION = '0.5.0'
3
3
  end
@@ -205,61 +205,54 @@ EOS
205
205
  end
206
206
  end
207
207
 
208
- describe '::halt' do
208
+ describe '#halt' do
209
209
  before do
210
210
  mock_app do
211
- get '/halt' do
211
+ get '/halt_fixnum' do
212
212
  halt 501
213
213
  response.write 'Hello world'
214
214
  end
215
215
 
216
216
  get '/halt_string' do
217
- halt 501, body: 'Halt!'
218
- end
219
-
220
- get '/halt_array' do
221
- halt 501, body: ['Halt!']
217
+ halt 'Halt!'
222
218
  end
223
219
 
224
220
  get '/halt_hash' do
225
- halt 501, body: { message: 'Halt!' }
221
+ halt({ header: 'OK' })
226
222
  end
227
223
 
228
- get '/halt_headers' do
229
- halt 501, headers: { header: 'OK' }
224
+ get '/halt_combined' do
225
+ halt 404, 'Not Found'
230
226
  end
231
227
  end
232
228
  end
233
229
 
234
230
  it 'returns the response given to halt function' do
235
- get '/halt'
236
- last_response.headers.must_equal({ 'Content-Length' => '0' })
231
+ get '/halt_fixnum'
237
232
  last_response.body.must_equal ''
233
+ last_response.headers.must_equal({ 'Content-Type' => 'text/html; charset=utf-8', 'Content-Length' => '0' })
238
234
  last_response.status.must_equal 501
239
235
  end
240
236
 
241
- it 'accepts a string as body' do
237
+ it 'accepts body' do
242
238
  get '/halt_string'
243
239
  last_response.body.must_equal 'Halt!'
244
- last_response.status.must_equal 501
245
- end
246
-
247
- it 'accepts an Array as body' do
248
- get '/halt_array'
249
- last_response.body.must_equal 'Halt!'
250
- last_response.status.must_equal 501
240
+ last_response.headers.must_equal({ 'Content-Type' => 'text/html; charset=utf-8', 'Content-Length' => '5' })
241
+ last_response.status.must_equal 200
251
242
  end
252
243
 
253
- it 'accepts a Hash as body' do
244
+ it 'accepts headers' do
254
245
  get '/halt_hash'
255
- last_response.body.must_equal '[:message, "Halt!"]'
256
- last_response.status.must_equal 501
246
+ last_response.body.must_equal ''
247
+ last_response.headers.must_equal({ 'Content-Type' => 'text/html; charset=utf-8', 'Content-Length' => '0', header: 'OK' })
248
+ last_response.status.must_equal 200
257
249
  end
258
-
259
- it 'accepts headers' do
260
- get '/halt_headers'
261
- last_response.headers.must_equal({ header: 'OK', 'Content-Length' => '0' })
262
- last_response.status.must_equal 501
250
+
251
+ it 'accepts combinations' do
252
+ get '/halt_combined'
253
+ last_response.body.must_equal 'Not Found'
254
+ last_response.headers.must_equal({ 'Content-Type' => 'text/html; charset=utf-8', 'Content-Length' => '9' })
255
+ last_response.status.must_equal 404
263
256
  end
264
257
  end
265
258
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hobbit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patricio Mac Adden
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-11 00:00:00.000000000 Z
11
+ date: 2014-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler