In Files
- webrick/httpresponse.rb
Parent
Class/Module Index
- Dir
- Errno
- Errno::ECONNABORTED
- Errno::ECONNRESET
- Errno::EPROTO
- File
- Object
- WEBrick
- WEBrick::AccessLog
- WEBrick::AccessLog::AccessLogError
- WEBrick::BasicLog
- WEBrick::CGI
- WEBrick::Config
- WEBrick::Config::OpenSSL
- WEBrick::Cookie
- WEBrick::Daemon
- WEBrick::GenericServer
- WEBrick::HTMLUtils
- WEBrick::HTTPAuth
- WEBrick::HTTPAuth::Authenticator
- WEBrick::HTTPAuth::BasicAuth
- WEBrick::HTTPAuth::DigestAuth
- WEBrick::HTTPAuth::Htdigest
- WEBrick::HTTPAuth::Htgroup
- WEBrick::HTTPAuth::Htpasswd
- WEBrick::HTTPAuth::ProxyAuthenticator
- WEBrick::HTTPAuth::ProxyBasicAuth
- WEBrick::HTTPAuth::ProxyDigestAuth
- WEBrick::HTTPAuth::UserDB
- WEBrick::HTTPProxyServer
- WEBrick::HTTPRequest
- WEBrick::HTTPResponse
- WEBrick::HTTPServer
- WEBrick::HTTPServerError
- WEBrick::HTTPServlet
- WEBrick::HTTPServlet::AbstractServlet
- WEBrick::HTTPServlet::CGIHandler
- WEBrick::HTTPServlet::DefaultFileHandler
- WEBrick::HTTPServlet::ERBHandler
- WEBrick::HTTPServlet::FileHandler
- WEBrick::HTTPServlet::HTTPServletError
- WEBrick::HTTPServlet::ProcHandler
- WEBrick::HTTPStatus
- WEBrick::HTTPStatus::ClientError
- WEBrick::HTTPStatus::EOFError
- WEBrick::HTTPStatus::Error
- WEBrick::HTTPStatus::Info
- WEBrick::HTTPStatus::Redirect
- WEBrick::HTTPStatus::ServerError
- WEBrick::HTTPStatus::Status
- WEBrick::HTTPStatus::Success
- WEBrick::HTTPUtils
- WEBrick::HTTPUtils::FormData
- WEBrick::HTTPVersion
- WEBrick::Log
- WEBrick::ServerError
- WEBrick::SimpleServer
- WEBrick::Utils
- WEBrick::Utils::TimeoutHandler
- WEBrick::Utils::TimeoutHandler::Thread
WEBrick::HTTPResponse
An HTTP response. This is filled in by the service or do_* methods of a WEBrick HTTP Servlet.
Attributes
Public Class Methods
new(config)
Creates a new HTTP response object. WEBrick::Config::HTTP is the default configuration.
# File webrick/httpresponse.rb, line 96 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
Public Instance Methods
[](field)
Retrieves the response header field
# File webrick/httpresponse.rb, line 133 def [](field) @header[field.downcase] end
[]=(field, value)
Sets the response header field
to value
# File webrick/httpresponse.rb, line 140 def []=(field, value) @header[field.downcase] = value.to_s end
chunked=(val)
Enables chunked transfer encoding.
# File webrick/httpresponse.rb, line 191 def chunked=(val) @chunked = val ? true : false end
chunked?()
Will this response body be returned using chunked transfer-encoding?
# File webrick/httpresponse.rb, line 184 def chunked? @chunked end
content_length()
The content-length header
# File webrick/httpresponse.rb, line 147 def content_length if len = self['content-length'] return Integer(len) end end
content_length=(len)
Sets the content-length header to len
# File webrick/httpresponse.rb, line 156 def content_length=(len) self['content-length'] = len.to_s end
content_type()
The content-type header
# File webrick/httpresponse.rb, line 163 def content_type self['content-type'] end
content_type=(type)
Sets the content-type header to type
# File webrick/httpresponse.rb, line 170 def content_type=(type) self['content-type'] = type end
each()
Iterates over each header in the response
# File webrick/httpresponse.rb, line 177 def each @header.each{|field, value| yield(field, value) } end
keep_alive?()
Will this response’s connection be kept alive?
# File webrick/httpresponse.rb, line 198 def keep_alive? @keep_alive end
set_error(ex, backtrace=false)
Creates an error page for exception ex
with an optional
backtrace
# File webrick/httpresponse.rb, line 333 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 @body = '' @body << <<-_end_of_html_ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <HTML> <HEAD><TITLE>#{HTMLUtils::escape(@reason_phrase)}</TITLE></HEAD> <BODY> <H1>#{HTMLUtils::escape(@reason_phrase)}</H1> #{HTMLUtils::escape(ex.message)} <HR> _end_of_html_ if backtrace && $DEBUG @body << "backtrace of `#{HTMLUtils::escape(ex.class.to_s)}' " @body << "#{HTMLUtils::escape(ex.message)}" @body << "<PRE>" ex.backtrace.each{|line| @body << "\t#{line}\n"} @body << "</PRE><HR>" end @body << <<-_end_of_html_ <ADDRESS> #{HTMLUtils::escape(@config[:ServerSoftware])} at #{host}:#{port} </ADDRESS> </BODY> </HTML> _end_of_html_ end
set_redirect(status, url)
Redirects to url
with a WEBrick::HTTPStatus::Redirect
status
.
Example:
res.set_redirect WEBrick::HTTPStatus::TemporaryRedirect
# File webrick/httpresponse.rb, line 324 def set_redirect(status, url) @body = "<HTML><A HREF=\"#{url}\">#{url}</A>.</HTML>\n" @header['location'] = url.to_s raise status end