An HTTP response. This is filled in by the service or do_* methods of a WEBrick HTTP Servlet.

Methods
#
C
E
K
N
S
Attributes
[RW] body

Body may be a String or IO-like object that responds to read and readpartial.

[R] config

Configuration for this response

[R] cookies

Response cookies

[RW] filename

Filename of the static file in this response. Only used by the FileHandler servlet.

[R] header

Response header

[R] http_version

HTTP Response version

[RW] keep_alive

Is this a keep-alive response?

[RW] reason_phrase

Response reason phrase (“OK”)

[RW] request_http_version

Request HTTP version for this response

[RW] request_method

Request method for this response

[RW] request_uri

Request URI for this response

[R] sent_size

Bytes sent in this response

[R] status

Response status code (200)

Class Public methods
new(config)

Creates a new HTTP response object. WEBrick::Config::HTTP is the default configuration.

# File lib/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
Instance Public methods
[](field)

Retrieves the response header field

# File lib/webrick/httpresponse.rb, line 133
def [](field)
  @header[field.downcase]
end
[]=(field, value)

Sets the response header field to value

# File lib/webrick/httpresponse.rb, line 140
def []=(field, value)
  @header[field.downcase] = value.to_s
end
chunked=(val)

Enables chunked transfer encoding.

# File lib/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 lib/webrick/httpresponse.rb, line 184
def chunked?
  @chunked
end
content_length()

The content-length header

# File lib/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 lib/webrick/httpresponse.rb, line 156
def content_length=(len)
  self['content-length'] = len.to_s
end
content_type()

The content-type header

# File lib/webrick/httpresponse.rb, line 163
def content_type
  self['content-type']
end
content_type=(type)

Sets the content-type header to type

# File lib/webrick/httpresponse.rb, line 170
def content_type=(type)
  self['content-type'] = type
end
each()

Iterates over each header in the response

# File lib/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 lib/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 lib/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

  error_body(backtrace, ex, host, port)
end
set_redirect(status, url)

Redirects to url with a WEBrick::HTTPStatus::Redirect status.

Example:

res.set_redirect WEBrick::HTTPStatus::TemporaryRedirect
# File lib/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
status=(status)

Sets the response's status to the status code

# File lib/webrick/httpresponse.rb, line 125
def status=(status)
  @status = status
  @reason_phrase = HTTPStatus::reason_phrase(status)
end
status_line()

The response's HTTP status line

# File lib/webrick/httpresponse.rb, line 118
def status_line
  "HTTP/#@http_version #@status #@reason_phrase #{CRLF}"
end