module Rack::Response::Helpers

def accepted?; status == 202; end

def accepted?;            status == 202;                        end

def add_header(key, v)

http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2

assert_equal 'Accept-Encoding,Cookie', response.get_header('Vary')

response.add_header 'Vary', 'Cookie'
response.add_header 'Vary', 'Accept-Encoding'
Example:

Add a header that may have multiple values.
def add_header(key, v)
  if v.nil?
    get_header key
  elsif has_header? key
    set_header key, "#{get_header key},#{v}"
  else
    set_header key, v
  end
end

def append(chunk)

def append(chunk)
  @body << chunk
  unless chunked?
    @length += chunk.bytesize
    set_header(CONTENT_LENGTH, @length.to_s)
  end
  return chunk
end

def bad_request?; status == 400; end

def bad_request?;         status == 400;                        end

def buffered_body!

def buffered_body!
  return if @buffered
  if @body.is_a?(Array)
    # The user supplied body was an array:
    @body = @body.compact
    @body.each do |part|
      @length += part.to_s.bytesize
    end
  else
    # Turn the user supplied body into a buffered array:
    body = @body
    @body = Array.new
    body.each do |part|
      @writer.call(part.to_s)
    end
    body.close if body.respond_to?(:close)
  end
  @buffered = true
end

def cache!(duration = 3600, directive: "public")

Options Hash: (**directive)
  • The (String) -- cache control directive, one of "public", "private", "no-cache" or "no-store".

Parameters:
  • duration (Integer) -- The number of seconds until the cache expires.
def cache!(duration = 3600, directive: "public")
  unless headers[CACHE_CONTROL] =~ /no-cache/
    set_header CACHE_CONTROL, "#{directive}, max-age=#{duration}"
    set_header EXPIRES, (Time.now + duration).httpdate
  end
end

def cache_control

def cache_control
  get_header CACHE_CONTROL
end

def cache_control=(v)

def cache_control=(v)
  set_header CACHE_CONTROL, v
end

def client_error?; status >= 400 && status < 500; end

def client_error?;        status >= 400 && status < 500;        end

def content_length

def content_length
  cl = get_header CONTENT_LENGTH
  cl ? cl.to_i : cl
end

def content_type

Get the content type of the response.
def content_type
  get_header CONTENT_TYPE
end

def content_type=(content_type)

Set the content type of the response.
def content_type=(content_type)
  set_header CONTENT_TYPE, content_type
end

def created?; status == 201; end

def created?;             status == 201;                        end

def delete_cookie(key, value = {})

def delete_cookie(key, value = {})
  set_header SET_COOKIE, ::Rack::Utils.add_remove_cookie_to_header(get_header(SET_COOKIE), key, value)
end

def do_not_cache!

Specifies that the content shouldn't be cached. Overrides `cache!` if already called.
def do_not_cache!
  set_header CACHE_CONTROL, "no-cache, must-revalidate"
  set_header EXPIRES, Time.now.httpdate
end

def etag

def etag
  get_header ETAG
end

def etag=(v)

def etag=(v)
  set_header ETAG, v
end

def forbidden?; status == 403; end

def forbidden?;           status == 403;                        end

def include?(header)

def include?(header)
  has_header? header
end

def informational?; status >= 100 && status < 200; end

def informational?;       status >= 100 && status < 200;        end

def invalid?; status < 100 || status >= 600; end

def invalid?;             status < 100 || status >= 600;        end

def location

def location
  get_header "Location"
end

def location=(location)

def location=(location)
  set_header "Location", location
end

def media_type

def media_type
  MediaType.type(content_type)
end

def media_type_params

def media_type_params
  MediaType.params(content_type)
end

def method_not_allowed?; status == 405; end

def method_not_allowed?;  status == 405;                        end

def moved_permanently?; status == 301; end

def moved_permanently?;   status == 301;                        end

def no_content?; status == 204; end

def no_content?;          status == 204;                        end

def not_found?; status == 404; end

def not_found?;           status == 404;                        end

def ok?; status == 200; end

def ok?;                  status == 200;                        end

def precondition_failed?; status == 412; end

def precondition_failed?; status == 412;                        end

def redirect?; [301, 302, 303, 307, 308].include? status; end

def redirect?;            [301, 302, 303, 307, 308].include? status; end

def redirection?; status >= 300 && status < 400; end

def redirection?;         status >= 300 && status < 400;        end

def server_error?; status >= 500 && status < 600; end

def server_error?;        status >= 500 && status < 600;        end

def set_cookie(key, value)

def set_cookie(key, value)
  cookie_header = get_header SET_COOKIE
  set_header SET_COOKIE, ::Rack::Utils.add_cookie_to_header(cookie_header, key, value)
end

def set_cookie_header

def set_cookie_header
  get_header SET_COOKIE
end

def set_cookie_header=(v)

def set_cookie_header=(v)
  set_header SET_COOKIE, v
end

def successful?; status >= 200 && status < 300; end

def successful?;          status >= 200 && status < 300;        end

def unauthorized?; status == 401; end

def unauthorized?;        status == 401;                        end

def unprocessable?; status == 422; end

def unprocessable?;       status == 422;                        end