module Rack::Response::Helpers
Public Instance Methods
accepted?()
click to toggle source
# File lib/rack/response.rb, line 144 def accepted?; status == 202; end
add_header(key, v)
click to toggle source
Add a header that may have multiple values.
Example:
response.add_header 'Vary', 'Accept-Encoding' response.add_header 'Vary', 'Cookie' assert_equal 'Accept-Encoding,Cookie', response.get_header('Vary')
www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
# File lib/rack/response.rb, line 170 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
bad_request?()
click to toggle source
# File lib/rack/response.rb, line 147 def bad_request?; status == 400; end
cache!(duration = 3600, directive: "public")
click to toggle source
Specify that the content should be cached. @param duration [Integer] The number of seconds until the cache expires. @option directive [String] The cache control directive, one of “public”, “private”, “no-cache” or “no-store”.
# File lib/rack/response.rb, line 245 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
cache_control()
click to toggle source
# File lib/rack/response.rb, line 228 def cache_control get_header CACHE_CONTROL end
cache_control=(v)
click to toggle source
# File lib/rack/response.rb, line 232 def cache_control=(v) set_header CACHE_CONTROL, v end
client_error?()
click to toggle source
# File lib/rack/response.rb, line 139 def client_error?; status >= 400 && status < 500; end
content_length()
click to toggle source
# File lib/rack/response.rb, line 198 def content_length cl = get_header CONTENT_LENGTH cl ? cl.to_i : cl end
content_type()
click to toggle source
Get the content type of the response.
# File lib/rack/response.rb, line 181 def content_type get_header CONTENT_TYPE end
content_type=(content_type)
click to toggle source
Set the content type of the response.
# File lib/rack/response.rb, line 186 def content_type=(content_type) set_header CONTENT_TYPE, content_type end
created?()
click to toggle source
# File lib/rack/response.rb, line 143 def created?; status == 201; end
do_not_cache!()
click to toggle source
Specifies that the content shouldn't be cached. Overrides `cache!` if already called.
# File lib/rack/response.rb, line 237 def do_not_cache! set_header CACHE_CONTROL, "no-cache, must-revalidate" set_header EXPIRES, Time.now.httpdate end
etag()
click to toggle source
# File lib/rack/response.rb, line 252 def etag get_header ETAG end
etag=(v)
click to toggle source
# File lib/rack/response.rb, line 256 def etag=(v) set_header ETAG, v end
forbidden?()
click to toggle source
# File lib/rack/response.rb, line 149 def forbidden?; status == 403; end
include?(header)
click to toggle source
# File lib/rack/response.rb, line 157 def include?(header) has_header? header end
informational?()
click to toggle source
# File lib/rack/response.rb, line 136 def informational?; status >= 100 && status < 200; end
invalid?()
click to toggle source
# File lib/rack/response.rb, line 134 def invalid?; status < 100 || status >= 600; end
location()
click to toggle source
# File lib/rack/response.rb, line 203 def location get_header "Location" end
location=(location)
click to toggle source
# File lib/rack/response.rb, line 207 def location=(location) set_header "Location", location end
media_type()
click to toggle source
# File lib/rack/response.rb, line 190 def media_type MediaType.type(content_type) end
media_type_params()
click to toggle source
# File lib/rack/response.rb, line 194 def media_type_params MediaType.params(content_type) end
method_not_allowed?()
click to toggle source
# File lib/rack/response.rb, line 151 def method_not_allowed?; status == 405; end
moved_permanently?()
click to toggle source
# File lib/rack/response.rb, line 146 def moved_permanently?; status == 301; end
no_content?()
click to toggle source
# File lib/rack/response.rb, line 145 def no_content?; status == 204; end
not_found?()
click to toggle source
# File lib/rack/response.rb, line 150 def not_found?; status == 404; end
ok?()
click to toggle source
# File lib/rack/response.rb, line 142 def ok?; status == 200; end
precondition_failed?()
click to toggle source
# File lib/rack/response.rb, line 152 def precondition_failed?; status == 412; end
redirect?()
click to toggle source
# File lib/rack/response.rb, line 155 def redirect?; [301, 302, 303, 307, 308].include? status; end
redirection?()
click to toggle source
# File lib/rack/response.rb, line 138 def redirection?; status >= 300 && status < 400; end
server_error?()
click to toggle source
# File lib/rack/response.rb, line 140 def server_error?; status >= 500 && status < 600; end
successful?()
click to toggle source
# File lib/rack/response.rb, line 137 def successful?; status >= 200 && status < 300; end
unprocessable?()
click to toggle source
# File lib/rack/response.rb, line 153 def unprocessable?; status == 422; end
Protected Instance Methods
append(chunk)
click to toggle source
# File lib/rack/response.rb, line 286 def append(chunk) @body << chunk unless chunked? @length += chunk.bytesize set_header(CONTENT_LENGTH, @length.to_s) end return chunk end
buffered_body!()
click to toggle source
# File lib/rack/response.rb, line 262 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