class Thin::Headers
Store HTTP header name-value pairs direcly to a string and allow duplicated entries on some names.
Constants
- ALLOWED_DUPLICATES
- CR_OR_LF
- HEADER_FORMAT
Public Class Methods
new()
click to toggle source
# File lib/thin/headers.rb, line 13 def initialize @sent = {} @out = [] end
Public Instance Methods
[]=(key, value)
click to toggle source
Add key: value
pair to the headers. Ignore if already sent and no duplicates are allowed for this key
.
# File lib/thin/headers.rb, line 21 def []=(key, value) downcase_key = key.downcase if !@sent.has_key?(downcase_key) || ALLOWED_DUPLICATES.include?(downcase_key) @sent[downcase_key] = true value = case value when Time value.httpdate when NilClass return when CR_OR_LF raise InvalidHeader, "Header contains CR or LF" else value.to_s end @out << HEADER_FORMAT % [key, value] end end
has_key?(key)
click to toggle source
# File lib/thin/headers.rb, line 39 def has_key?(key) @sent[key.downcase] end
to_s()
click to toggle source
# File lib/thin/headers.rb, line 43 def to_s @out.join end