module Marfa::Helpers::HTTP::Vary
Constants
- VARY_HEADER
- VARY_UNSPECIFIED
Public Instance Methods
vary!(hdr_name)
click to toggle source
Sets the HTTP
“`Vary`” header in Sinatra's response `headers`.
@param hdr_name [String] The HTTP
header name. @return The updated `headers`.
# File lib/marfa/helpers/http/vary.rb, line 19 def vary!(hdr_name) hdr_name = hdr_name.to_s if !hdr_name.kind_of?(::String) # Shortcut to avoid expensive splitting in the # simple "*" case: if hdr_name == VARY_UNSPECIFIED headers[VARY_HEADER] = VARY_UNSPECIFIED.dup unless (headers[VARY_HEADER] == VARY_UNSPECIFIED) # Normal operation: else vary_hdrs = headers[VARY_HEADER].to_s.split(/\s*(?:,\s*)+/) if vary_hdrs.include?(VARY_UNSPECIFIED) headers[VARY_HEADER] = VARY_UNSPECIFIED.dup else headers[VARY_HEADER] = vary_hdrs .push(hdr_name) .uniq(& :downcase) .join(',') end end headers[VARY_HEADER] end