Module: Sinatra::Helpers::HTTP::Vary
- Defined in:
- lib/sinatra-helpers/http/vary.rb
Overview
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 response ‘headers`.
Instance Method Details
#vary!(hdr_name) ⇒ Object
Sets the HTTP “‘Vary`” header in Sinatra’s response ‘headers`.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/sinatra-helpers/http/vary.rb', line 30 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 return headers[ VARY_HEADER ] end |