Module: Marfa::Helpers::HTTP::Vary
- Defined in:
- lib/marfa/helpers/http/vary.rb
Overview
Helpers to set the HTTP “Vary” header.
Constant Summary collapse
- VARY_HEADER =
'Vary'.freeze
- VARY_UNSPECIFIED =
'*'.freeze
Instance Method Summary collapse
-
#vary!(hdr_name) ⇒ Object
Sets the HTTP “
Vary” header in Sinatra’s responseheaders.
Instance Method Details
#vary!(hdr_name) ⇒ Object
Sets the HTTP “Vary” header in Sinatra’s response headers.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# 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 |