module Rack::Response::Helpers
Public Instance Methods
Source
# File lib/rack/response.rb, line 171 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
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')
Source
# File lib/rack/response.rb, line 246 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
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”.
Source
# File lib/rack/response.rb, line 229 def cache_control get_header CACHE_CONTROL end
Source
# File lib/rack/response.rb, line 233 def cache_control=(v) set_header CACHE_CONTROL, v end
Source
# File lib/rack/response.rb, line 140 def client_error?; status >= 400 && status < 500; end
Source
# File lib/rack/response.rb, line 199 def content_length cl = get_header CONTENT_LENGTH cl ? cl.to_i : cl end
Source
# File lib/rack/response.rb, line 182 def content_type get_header CONTENT_TYPE end
Get the content type of the response.
Source
# File lib/rack/response.rb, line 187 def content_type=(content_type) set_header CONTENT_TYPE, content_type end
Set the content type of the response.
Source
# File lib/rack/response.rb, line 238 def do_not_cache! set_header CACHE_CONTROL, "no-cache, must-revalidate" set_header EXPIRES, Time.now.httpdate end
Specifies that the content shouldn’t be cached. Overrides ‘cache!` if already called.
Source
# File lib/rack/response.rb, line 158 def include?(header) has_header? header end
Source
# File lib/rack/response.rb, line 137 def informational?; status >= 100 && status < 200; end
Source
# File lib/rack/response.rb, line 135 def invalid?; status < 100 || status >= 600; end
Source
# File lib/rack/response.rb, line 208 def location=(location) set_header "Location", location end
Source
# File lib/rack/response.rb, line 191 def media_type MediaType.type(content_type) end
Source
# File lib/rack/response.rb, line 195 def media_type_params MediaType.params(content_type) end
Source
# File lib/rack/response.rb, line 152 def method_not_allowed?; status == 405; end
Source
# File lib/rack/response.rb, line 147 def moved_permanently?; status == 301; end
Source
# File lib/rack/response.rb, line 153 def precondition_failed?; status == 412; end
Source
# File lib/rack/response.rb, line 156 def redirect?; [301, 302, 303, 307, 308].include? status; end
Source
# File lib/rack/response.rb, line 139 def redirection?; status >= 300 && status < 400; end
Source
# File lib/rack/response.rb, line 141 def server_error?; status >= 500 && status < 600; end
Source
# File lib/rack/response.rb, line 138 def successful?; status >= 200 && status < 300; end
Source
# File lib/rack/response.rb, line 154 def unprocessable?; status == 422; end
Protected Instance Methods
Source
# File lib/rack/response.rb, line 287 def append(chunk) @body << chunk unless chunked? @length += chunk.bytesize set_header(CONTENT_LENGTH, @length.to_s) end return chunk end
Source
# File lib/rack/response.rb, line 263 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