Class: WEBrick::HTTPResponse
Relationships & Source Files | |
Namespace Children | |
Exceptions:
| |
Inherits: | Object |
Defined in: | lib/webrick/httpresponse.rb |
Overview
An HTTP response. This is filled in by the service or do_* methods of a ::WEBrick HTTP Servlet.
Class Method Summary
-
.new(config) ⇒ HTTPResponse
constructor
Creates a new HTTP response object.
Instance Attribute Summary
-
#body
rw
Body may be a String or IO-like object that responds to
#read
and#readpartial
. -
#chunked=(val)
rw
Enables chunked transfer encoding.
-
#chunked? ⇒ Boolean
rw
Will this response body be returned using chunked transfer-encoding?
-
#content_length
rw
The content-length header.
-
#content_length=(len)
rw
Sets the content-length header to
len
-
#content_type
rw
The content-type header.
-
#content_type=(type)
rw
Sets the content-type header to
type
-
#filename
rw
Filename of the static file in this response.
-
#keep_alive
rw
Is this a keep-alive response?
-
#keep_alive? ⇒ Boolean
rw
Will this response's connection be kept alive?
-
#reason_phrase
rw
Response reason phrase (“OK”).
-
#request_http_version
rw
Request HTTP version for this response.
-
#request_method
rw
Request method for this response.
-
#request_uri
rw
Request URI for this response.
-
#status
rw
Response status code (200).
-
#status=(status)
rw
Sets the response's status to the #status code.
-
#config
readonly
Configuration for this response.
-
#cookies
readonly
Response cookies.
-
#header
readonly
Response header.
-
#http_version
readonly
HTTP Response version.
-
#sent_size
readonly
Bytes sent in this response.
Instance Method Summary
-
#[](field)
Retrieves the response header
field
-
#[]=(field, value)
Sets the response header
field
tovalue
-
#each
Iterates over each header in the response.
-
#set_error(ex, backtrace = false)
Creates an error page for exception
ex
with an optionalbacktrace
-
#set_redirect(status, url)
Redirects to
url
with a HTTPStatus::Redirect #status. -
#status_line
The response's HTTP status line.
- #check_header(header_value) private
Constructor Details
.new(config) ⇒ HTTPResponse
Creates a new HTTP response object. Config::HTTP is the default configuration.
# File 'lib/webrick/httpresponse.rb', line 97
def initialize(config) @config = config @buffer_size = config[:OutputBufferSize] @logger = config[:Logger] @header = Hash.new @status = HTTPStatus::RC_OK @reason_phrase = nil @http_version = HTTPVersion::convert(@config[:HTTPVersion]) @body = '' @keep_alive = true @cookies = [] @request_method = nil @request_uri = nil @request_http_version = @http_version # temporary @chunked = false @filename = nil @sent_size = 0 end
Instance Attribute Details
#body (rw)
Body may be a String or IO-like object that responds to #read
and #readpartial
.
# File 'lib/webrick/httpresponse.rb', line 55
attr_accessor :body
#chunked=(val) (rw)
Enables chunked transfer encoding.
# File 'lib/webrick/httpresponse.rb', line 192
def chunked=(val) @chunked = val ? true : false end
#chunked? ⇒ Boolean
(rw)
Will this response body be returned using chunked transfer-encoding?
# File 'lib/webrick/httpresponse.rb', line 185
def chunked? @chunked end
#config (readonly)
Configuration for this response
# File 'lib/webrick/httpresponse.rb', line 86
attr_reader :config
#content_length (rw)
The content-length header
# File 'lib/webrick/httpresponse.rb', line 148
def content_length if len = self['content-length'] return Integer(len) end end
#content_length=(len) (rw)
Sets the content-length header to len
# File 'lib/webrick/httpresponse.rb', line 157
def content_length=(len) self['content-length'] = len.to_s end
#content_type (rw)
The content-type header
# File 'lib/webrick/httpresponse.rb', line 164
def content_type self['content-type'] end
#content_type=(type) (rw)
Sets the content-type header to type
# File 'lib/webrick/httpresponse.rb', line 171
def content_type=(type) self['content-type'] = type end
#cookies (readonly)
Response cookies
# File 'lib/webrick/httpresponse.rb', line 44
attr_reader :
#filename (rw)
Filename of the static file in this response. Only used by the FileHandler servlet.
# File 'lib/webrick/httpresponse.rb', line 76
attr_accessor :filename
#header (readonly)
Response header
# File 'lib/webrick/httpresponse.rb', line 39
attr_reader :header
#http_version (readonly)
HTTP Response version
# File 'lib/webrick/httpresponse.rb', line 29
attr_reader :http_version
#keep_alive (rw)
Is this a keep-alive response?
# File 'lib/webrick/httpresponse.rb', line 81
attr_accessor :keep_alive
#keep_alive? ⇒ Boolean
(rw)
Will this response's connection be kept alive?
# File 'lib/webrick/httpresponse.rb', line 199
def keep_alive? @keep_alive end
#reason_phrase (rw)
Response reason phrase (“OK”)
# File 'lib/webrick/httpresponse.rb', line 49
attr_accessor :reason_phrase
#request_http_version (rw)
Request HTTP version for this response
# File 'lib/webrick/httpresponse.rb', line 70
attr_accessor :request_http_version
#request_method (rw)
Request method for this response
# File 'lib/webrick/httpresponse.rb', line 60
attr_accessor :request_method
#request_uri (rw)
Request URI for this response
# File 'lib/webrick/httpresponse.rb', line 65
attr_accessor :request_uri
#sent_size (readonly)
Bytes sent in this response
# File 'lib/webrick/httpresponse.rb', line 91
attr_reader :sent_size
#status (rw)
Response status code (200)
# File 'lib/webrick/httpresponse.rb', line 34
attr_reader :status
#status=(status) (rw)
Sets the response's status to the #status code
# File 'lib/webrick/httpresponse.rb', line 126
def status=(status) @status = status @reason_phrase = HTTPStatus::reason_phrase(status) end
Instance Method Details
#[](field)
Retrieves the response header field
# File 'lib/webrick/httpresponse.rb', line 134
def [](field) @header[field.downcase] end
#[]=(field, value)
Sets the response header field
to value
# File 'lib/webrick/httpresponse.rb', line 141
def []=(field, value) @header[field.downcase] = value.to_s end
#check_header(header_value) (private)
[ GitHub ]# File 'lib/webrick/httpresponse.rb', line 368
def check_header(header_value) if header_value =~ /\r\n/ raise InvalidHeader else header_value end end
#each
Iterates over each header in the response
# File 'lib/webrick/httpresponse.rb', line 178
def each @header.each{|field, value| yield(field, value) } end
#set_error(ex, backtrace = false)
Creates an error page for exception ex
with an optional backtrace
# File 'lib/webrick/httpresponse.rb', line 341
def set_error(ex, backtrace=false) case ex when HTTPStatus::Status @keep_alive = false if HTTPStatus::error?(ex.code) self.status = ex.code else @keep_alive = false self.status = HTTPStatus::RC_INTERNAL_SERVER_ERROR end @header['content-type'] = "text/html; charset=ISO-8859-1" if respond_to?(:create_error_page) create_error_page() return end if @request_uri host, port = @request_uri.host, @request_uri.port else host, port = @config[:ServerName], @config[:Port] end error_body(backtrace, ex, host, port) end
#set_redirect(status, url)
Redirects to url
with a HTTPStatus::Redirect #status.
Example:
res.set_redirect WEBrick::HTTPStatus::TemporaryRedirect
#status_line
The response's HTTP status line
# File 'lib/webrick/httpresponse.rb', line 119
def status_line "HTTP/#@http_version #@status #@reason_phrase #{CRLF}" end