class ActionDispatch::Http::Headers - actionpack-4.2.3 Documentation

# class ActionDispatch::Http::Headers

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"

### Constants

CGI_VARIABLES
HTTP_HEADER

### Attributes

env[R]

### Public Instance Methods

[](key) click to toggle source

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

    # File lib/action_dispatch/http/headers.rb, line 40
    def [](key)
      @env[env_name(key)]
    end

[]=(key, value) click to toggle source

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

    # File lib/action_dispatch/http/headers.rb, line 45
    def []=(key, value)
      @env[env_name(key)] = value
    end

each(&block) click to toggle source

    # File lib/action_dispatch/http/headers.rb, line 65
    def each(&block)
      @env.each(&block)
    end

fetch(key, *args, &block) click to toggle source

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.

    # File lib/action_dispatch/http/headers.rb, line 61
    def fetch(key, *args, &block)
      @env.fetch env_name(key), *args, &block
    end

include?(key)
Alias for: key?
key?(key) click to toggle source

    # File lib/action_dispatch/http/headers.rb, line 49
    def key?(key)
      @env.key? env_name(key)
    end

Also aliased as: include?
merge(headers_or_env) click to toggle source

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

    # 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) click to toggle source

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

    # 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

### Private Instance Methods

env_name(key) click to toggle source

Converts a HTTP header name to an environment variable name if it is not contained within the headers hash.

    # File lib/action_dispatch/http/headers.rb, line 89
    def env_name(key)
      key = key.to_s
      if key =~ HTTP_HEADER
        key = key.upcase.tr('-', '_')
        key = "HTTP_" + key unless CGI_VARIABLES.include?(key)
      end
      key
    end