Class: Zero::Response
- Inherits:
-
Object
- Object
- Zero::Response
- Defined in:
- lib/zero/response.rb
Overview
This is the representation of a response
Instance Attribute Summary collapse
-
#body ⇒ Object
Returns the value of attribute body.
-
#header ⇒ Object
Returns the value of attribute header.
-
#status ⇒ Object
Returns the value of attribute status.
Instance Method Summary collapse
-
#content_length ⇒ Object
Sets the content length header to the current length of the body Also creates one, if it does not exists.
-
#content_type=(value) ⇒ Object
Sets the content type header to the given value Also creates it, if it does not exists.
-
#initialize ⇒ Response
constructor
Constructor Sets default status code to 200.
-
#redirect(location, status = 302) ⇒ Object
Sets the Location header to the given URL and the status code to 302.
-
#to_a ⇒ Array
Returns the data of the response as an array: [status, header, body] to be usable by any webserver.
Constructor Details
#initialize ⇒ Response
Constructor Sets default status code to 200.
12 13 14 15 16 |
# File 'lib/zero/response.rb', line 12 def initialize @status = 200 @header = {} @body = [] end |
Instance Attribute Details
#body ⇒ Object
Returns the value of attribute body.
7 8 9 |
# File 'lib/zero/response.rb', line 7 def body @body end |
#header ⇒ Object
Returns the value of attribute header.
7 8 9 |
# File 'lib/zero/response.rb', line 7 def header @header end |
#status ⇒ Object
Returns the value of attribute status.
6 7 8 |
# File 'lib/zero/response.rb', line 6 def status @status end |
Instance Method Details
#content_length ⇒ Object
Sets the content length header to the current length of the body Also creates one, if it does not exists
57 58 59 |
# File 'lib/zero/response.rb', line 57 def content_length self.header['Content-Length'] = body.join.bytesize.to_s end |
#content_type=(value) ⇒ Object
Sets the content type header to the given value Also creates it, if it does not exists
66 67 68 |
# File 'lib/zero/response.rb', line 66 def content_type=(value) self.header['Content-Type'] = value end |
#redirect(location, status = 302) ⇒ Object
Sets the Location header to the given URL and the status code to 302.
74 75 76 77 |
# File 'lib/zero/response.rb', line 74 def redirect(location, status = 302) self.status = status self.header['Location'] = location end |
#to_a ⇒ Array
Returns the data of the response as an array:
- status, header, body
-
to be usable by any webserver.
Sets the Content-Type to ‘text/html’, if it’s not already set. Sets the Content-Length, if it’s not already set. (Won’t fix wrong lengths!) Removes Content-Type, Content-Length and body on status code 204 and 304.
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/zero/response.rb', line 38 def to_a # Remove content length and body, on status 204 and 304 if status == 204 or status == 304 header.delete('Content-Length') header.delete('Content-Type') self.body = [] else # Set content length, if not already set content_length unless header.has_key? 'Content-Length' # Set content type, if not already set self.content_type = 'text/html' unless header.has_key? 'Content-Type' end [status, header, body] end |