class ActionDispatch::Http::Headers

Parent:
Object
Included modules:
Enumerable

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

env     = { "CONTENT_TYPE" => "text/plain", "HTTP_USER_AGENT" => "curl/7.43.0" }
headers = ActionDispatch::Http::Headers.from_hash(env)
headers["Content-Type"] # => "text/plain"
headers["User-Agent"] # => "curl/7.43.0"

Also note that when headers are mapped to CGI-like variables by the Rack server, both dashes and underscores are converted to underscores. This ambiguity cannot be resolved at this stage anymore. Both underscores and dashes have to be interpreted as if they were originally sent as dashes.

# GET / HTTP/1.1
# ...
# User-Agent: curl/7.43.0
# X_Custom_Header: token

headers["X_Custom_Header"] # => nil
headers["X-Custom-Header"] # => "token"

Constants

CGI_VARIABLES
HTTP_HEADER

Public Class Methods

from_hash(hash) Show source
# File actionpack/lib/action_dispatch/http/headers.rb, line 48
def self.from_hash(hash)
  new ActionDispatch::Request.new hash
end

Public Instance Methods

[](key) Show source
# File actionpack/lib/action_dispatch/http/headers.rb, line 57
def [](key)
  @req.get_header env_name(key)
end

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

[]=(key, value) Show source
# File actionpack/lib/action_dispatch/http/headers.rb, line 62
def []=(key, value)
  @req.set_header env_name(key), value
end

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

add(key, value) Show source
# File actionpack/lib/action_dispatch/http/headers.rb, line 67
def add(key, value)
  @req.add_header env_name(key), value
end

Add a value to a multivalued header like Vary or Accept-Encoding.

each(&block) Show source
# File actionpack/lib/action_dispatch/http/headers.rb, line 93
def each(&block)
  @req.each_header(&block)
end
env() Show source
# File actionpack/lib/action_dispatch/http/headers.rb, line 114
def env; @req.env.dup; end
fetch(key, default = DEFAULT) { || ... } Show source
# File actionpack/lib/action_dispatch/http/headers.rb, line 85
def fetch(key, default = DEFAULT)
  @req.fetch_header(env_name(key)) do
    return default unless default == DEFAULT
    return yield if block_given?
    raise NameError, key
  end
end

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.

include?(key)
Alias for: key?
key?(key) Show source
# File actionpack/lib/action_dispatch/http/headers.rb, line 71
def key?(key)
  @req.has_header? env_name(key)
end
Also aliased as: include?
merge(headers_or_env) Show source
# File actionpack/lib/action_dispatch/http/headers.rb, line 99
def merge(headers_or_env)
  headers = @req.dup.headers
  headers.merge!(headers_or_env)
  headers
end

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

merge!(headers_or_env) Show source
# File actionpack/lib/action_dispatch/http/headers.rb, line 108
def merge!(headers_or_env)
  headers_or_env.each do |key, value|
    @req.set_header env_name(key), value
  end
end

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

© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.