Class: ActionDispatch::Http::Headers

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/action_dispatch/http/headers.rb

Overview

Provides access to the request’s HTTP headers from the environment.

env     = { "CONTENT_TYPE" => "text/plain" }
headers = ActionDispatch::Http::Headers.new(env)
headers["Content-Type"] # => "text/plain"

Constant Summary collapse

CGI_VARIABLES =
Set.new(%W[
  AUTH_TYPE
  CONTENT_LENGTH
  CONTENT_TYPE
  GATEWAY_INTERFACE
  HTTPS
  PATH_INFO
  PATH_TRANSLATED
  QUERY_STRING
  REMOTE_ADDR
  REMOTE_HOST
  REMOTE_IDENT
  REMOTE_USER
  REQUEST_METHOD
  SCRIPT_NAME
  SERVER_NAME
  SERVER_PORT
  SERVER_PROTOCOL
  SERVER_SOFTWARE
]).freeze
HTTP_HEADER =
/\A[A-Za-z0-9-]+\z/

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env = {}) ⇒ Headers

:nodoc:



35
36
37
# File 'lib/action_dispatch/http/headers.rb', line 35

def initialize(env = {}) # :nodoc:
  @env = env
end

Instance Attribute Details

#envObject (readonly)

Returns the value of attribute env.



33
34
35
# File 'lib/action_dispatch/http/headers.rb', line 33

def env
  @env
end

Instance Method Details

#[](key) ⇒ Object

Returns the value for the given key mapped to @env.



40
41
42
# File 'lib/action_dispatch/http/headers.rb', line 40

def [](key)
  @env[env_name(key)]
end

#[]=(key, value) ⇒ Object

Sets the given value for the key mapped to @env.



45
46
47
# File 'lib/action_dispatch/http/headers.rb', line 45

def []=(key, value)
  @env[env_name(key)] = value
end

#each(&block) ⇒ Object



65
66
67
# File 'lib/action_dispatch/http/headers.rb', line 65

def each(&block)
  @env.each(&block)
end

#fetch(key, *args, &block) ⇒ Object

Returns the value for the given key mapped to @env.

If the key is not found and an optional code block is not provided, raises a KeyError exception.

If the code block is provided, then it will be run and its result returned.



61
62
63
# File 'lib/action_dispatch/http/headers.rb', line 61

def fetch(key, *args, &block)
  @env.fetch env_name(key), *args, &block
end

#key?(key) ⇒ Boolean Also known as: include?

Returns:

  • (Boolean)


49
50
51
# File 'lib/action_dispatch/http/headers.rb', line 49

def key?(key)
  @env.key? env_name(key)
end

#merge(headers_or_env) ⇒ Object

Returns a new Http::Headers instance containing the contents of headers_or_env and the original instance.



71
72
73
74
75
# File 'lib/action_dispatch/http/headers.rb', line 71

def merge(headers_or_env)
  headers = Http::Headers.new(env.dup)
  headers.merge!(headers_or_env)
  headers
end

#merge!(headers_or_env) ⇒ Object

Adds the contents of headers_or_env to original instance entries; duplicate keys are overwritten with the values from headers_or_env.



80
81
82
83
84
# File 'lib/action_dispatch/http/headers.rb', line 80

def merge!(headers_or_env)
  headers_or_env.each do |key, value|
    self[env_name(key)] = value
  end
end