Class: Rack::Request::Headers
| Relationships & Source Files | |
| Inherits: | Object |
| Defined in: | lib/rack/request.rb |
Class Method Summary
- .new(env) ⇒ Headers constructor
Instance Method Summary
Constructor Details
.new(env) ⇒ Headers
# File 'lib/rack/request.rb', line 91
def initialize(env) @env = env end
Instance Method Details
#[](k)
[ GitHub ]# File 'lib/rack/request.rb', line 95
def [](k) @env[header_to_env_key(k)] end
#[]=(k, v)
[ GitHub ]# File 'lib/rack/request.rb', line 99
def []=(k, v) @env[header_to_env_key(k)] = v end
#add(k, v)
[ GitHub ]# File 'lib/rack/request.rb', line 103
def add(k, v) k = header_to_env_key(k) case existing = @env[k] when nil @env[k] = v when String @env[k] = [existing, v] when Array existing << v end end
#delete(k)
[ GitHub ]# File 'lib/rack/request.rb', line 115
def delete(k) @env.delete(header_to_env_key(k)) end
#each
[ GitHub ]# File 'lib/rack/request.rb', line 119
def each return to_enum(:each) unless block_given? @env.each do |k, v| next unless k = env_to_header_key(k) yield k, v end end
#env_to_header_key(k) (private)
[ GitHub ]# File 'lib/rack/request.rb', line 144
def env_to_header_key(k) case k when /\AHTTP_/ k = k[5..-1] k.downcase! k.tr!('_', '-') k when "CONTENT_LENGTH", "CONTENT_TYPE" k = k.downcase k.tr!('_', '-') k end end
#fetch(k, &block)
[ GitHub ]# File 'lib/rack/request.rb', line 128
def fetch(k, &block) @env.fetch(header_to_env_key(k), &block) end
#has_key?(k) ⇒ Boolean
# File 'lib/rack/request.rb', line 132
def has_key?(k) @env.has_key?(header_to_env_key(k)) end
#header_to_env_key(k) (private)
[ GitHub ]# File 'lib/rack/request.rb', line 158
def header_to_env_key(k) k = k.upcase k.tr!('-', '_') unless k == "CONTENT_LENGTH" || k == "CONTENT_TYPE" k = "HTTP_#{k}" end k end
#to_h
[ GitHub ]# File 'lib/rack/request.rb', line 136
def to_h h = {} each{|k, v| h[k] = v} h end