# class WEBrick::HTTPResponse

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

### Attributes

body[RW]

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

config[R]

Configuration for this response

cookies[R]

Response cookies

filename[RW]

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

header[R]

Response header

http_version[R]

HTTP Response version

keep_alive[RW]

Is this a keep-alive response?

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

sent_size[R]

Bytes sent in this response

status[R]

Response status code (200)

### Public Class Methods

new(config) click to toggle source

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

    # File lib/webrick/httpresponse.rb, line 99
    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) click to toggle source

Retrieves the response header `field`

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

[]=(field, value) click to toggle source

Sets the response header `field` to `value`

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

chunked=(val) click to toggle source

Enables chunked transfer encoding.

    # File lib/webrick/httpresponse.rb, line 194
    def chunked=(val)
      @chunked = val ? true : false
    end

chunked?() click to toggle source

Will this response body be returned using chunked transfer-encoding?

    # File lib/webrick/httpresponse.rb, line 187
    def chunked?
      @chunked
    end

content_length() click to toggle source

The content-length header

    # File lib/webrick/httpresponse.rb, line 150
    def content_length
      if len = self['content-length']
        return Integer(len)
      end
    end

content_length=(len) click to toggle source

Sets the content-length header to `len`

    # File lib/webrick/httpresponse.rb, line 159
    def content_length=(len)
      self['content-length'] = len.to_s
    end

content_type() click to toggle source

The content-type header

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

content_type=(type) click to toggle source

Sets the content-type header to `type`

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

each() { |field, value| ... } click to toggle source

Iterates over each header in the response

    # File lib/webrick/httpresponse.rb, line 180
    def each
      @header.each{|field, value|  yield(field, value) }
    end

keep_alive?() click to toggle source

Will this response's connection be kept alive?

    # File lib/webrick/httpresponse.rb, line 201
    def keep_alive?
      @keep_alive
    end

set_error(ex, backtrace=false) click to toggle source

Creates an error page for exception `ex` with an optional `backtrace`

    # File lib/webrick/httpresponse.rb, line 344
    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) click to toggle source

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

Example:

    res.set_redirect WEBrick::HTTPStatus::TemporaryRedirect

    # File lib/webrick/httpresponse.rb, line 334
    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

status=(status) click to toggle source

Sets the response's status to the `status` code

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

status_line() click to toggle source

The response's HTTP status line

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

### Private Instance Methods

check_header(header_value) click to toggle source

    # File lib/webrick/httpresponse.rb, line 371
    def check_header(header_value)
      header_value = header_value.to_s
      if /[\r\n]/ =~ header_value
        raise InvalidHeader
      else
        header_value
      end
    end