mirror of
https://github.com/faye/websocket-driver-ruby.git
synced 2025-11-01 13:59:38 +00:00
46 lines
864 B
Ruby
46 lines
864 B
Ruby
module WebSocket
|
|
class Driver
|
|
|
|
class Headers
|
|
ALLOWED_DUPLICATES = %w[set-cookie set-cookie2 warning www-authenticate]
|
|
|
|
def initialize(received = {})
|
|
@raw = received
|
|
clear
|
|
|
|
@received = {}
|
|
@raw.each { |k,v| @received[HTTP.normalize_header(k)] = v }
|
|
end
|
|
|
|
def clear
|
|
@sent = Set.new
|
|
@lines = []
|
|
end
|
|
|
|
def [](name)
|
|
@received[HTTP.normalize_header(name)]
|
|
end
|
|
|
|
def []=(name, value)
|
|
return if value.nil?
|
|
key = HTTP.normalize_header(name)
|
|
return unless @sent.add?(key) or ALLOWED_DUPLICATES.include?(key)
|
|
@lines << "#{ name.strip }: #{ value.to_s.strip }\r\n"
|
|
end
|
|
|
|
def inspect
|
|
@raw.inspect
|
|
end
|
|
|
|
def to_h
|
|
@raw.dup
|
|
end
|
|
|
|
def to_s
|
|
@lines.join('')
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|