An HTTP response.  This is filled in by the service or do_* methods of a WEBrick HTTP Servlet.
Body may be:
a String;
an IO-like object that responds to #read and #readpartial;
a Proc-like object that responds to #call.
In the latter case, either chunked= should be set to true, or header['content-length'] explicitly provided. Example:
server.mount_proc '/' do |req, res| res.chunked = true # or # res.header['content-length'] = 10 res.body = proc { |out| out.write(Time.now.to_s) } end
Creates a new HTTP response object. WEBrick::Config::HTTP is the default configuration.
 
               # File webrick/httpresponse.rb, line 112
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
  @bodytempfile = nil
end
             
            Retrieves the response header field
 
               # File webrick/httpresponse.rb, line 150
def [](field)
  @header[field.downcase]
end
             
            Sets the response header field to value
 
               # File webrick/httpresponse.rb, line 157
def []=(field, value)
  @chunked = value.to_s.downcase == 'chunked' if field.downcase == 'transfer-encoding'
  @header[field.downcase] = value.to_s
end
             
            Enables chunked transfer encoding.
 
               # File webrick/httpresponse.rb, line 209
def chunked=(val)
  @chunked = val ? true : false
end
             
            Will this response body be returned using chunked transfer-encoding?
 
               # File webrick/httpresponse.rb, line 202
def chunked?
  @chunked
end
             
            The content-length header
 
               # File webrick/httpresponse.rb, line 165
def content_length
  if len = self['content-length']
    return Integer(len)
  end
end
             
            Sets the content-length header to len
 
               # File webrick/httpresponse.rb, line 174
def content_length=(len)
  self['content-length'] = len.to_s
end
             
            The content-type header
 
               # File webrick/httpresponse.rb, line 181
def content_type
  self['content-type']
end
             
            Sets the content-type header to type
 
               # File webrick/httpresponse.rb, line 188
def content_type=(type)
  self['content-type'] = type
end
             
            Iterates over each header in the response
 
               # File webrick/httpresponse.rb, line 195
def each
  @header.each{|field, value|  yield(field, value) }
end
             
            Will this response's connection be kept alive?
 
               # File webrick/httpresponse.rb, line 216
def keep_alive?
  @keep_alive
end
             
            Creates an error page for exception ex with an optional backtrace
 
               # File webrick/httpresponse.rb, line 383
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
             
            Redirects to url with a WEBrick::HTTPStatus::Redirect status.
Example:
res.set_redirect WEBrick::HTTPStatus::TemporaryRedirect
 
               # File webrick/httpresponse.rb, line 373
def set_redirect(status, url)
  url = URI(url).to_s
  @body = "<HTML><A HREF=\"#{url}\">#{url}</A>.</HTML>\n"
  @header['location'] = url
  raise status
end