123456789_123456789_123456789_123456789_123456789_

Class: Rack::Request::Headers

Relationships & Source Files
Inherits: Object
Defined in: lib/rack/request.rb

Class Method Summary

Instance Method Summary

Constructor Details

.new(env) ⇒ Headers

[ GitHub ]

  
# 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

[ GitHub ]

  
# 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