mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
pass a request object to the headers object
This commit is contained in:
parent
c6cfcc6124
commit
34fa6658dd
4 changed files with 19 additions and 13 deletions
|
@ -30,24 +30,27 @@ module ActionDispatch
|
|||
HTTP_HEADER = /\A[A-Za-z0-9-]+\z/
|
||||
|
||||
include Enumerable
|
||||
attr_reader :env
|
||||
|
||||
def initialize(env = {}) # :nodoc:
|
||||
@env = env
|
||||
def self.from_hash(hash)
|
||||
new ActionDispatch::Request.new hash
|
||||
end
|
||||
|
||||
def initialize(request) # :nodoc:
|
||||
@req = request
|
||||
end
|
||||
|
||||
# Returns the value for the given key mapped to @env.
|
||||
def [](key)
|
||||
@env[env_name(key)]
|
||||
env[env_name(key)]
|
||||
end
|
||||
|
||||
# Sets the given value for the key mapped to @env.
|
||||
def []=(key, value)
|
||||
@env[env_name(key)] = value
|
||||
env[env_name(key)] = value
|
||||
end
|
||||
|
||||
def key?(key)
|
||||
@env.key? env_name(key)
|
||||
env.key? env_name(key)
|
||||
end
|
||||
alias :include? :key?
|
||||
|
||||
|
@ -59,17 +62,17 @@ module ActionDispatch
|
|||
# If the code block is provided, then it will be run and
|
||||
# its result returned.
|
||||
def fetch(key, *args, &block)
|
||||
@env.fetch env_name(key), *args, &block
|
||||
env.fetch env_name(key), *args, &block
|
||||
end
|
||||
|
||||
def each(&block)
|
||||
@env.each(&block)
|
||||
env.each(&block)
|
||||
end
|
||||
|
||||
# Returns a new Http::Headers instance containing the contents of
|
||||
# <tt>headers_or_env</tt> and the original instance.
|
||||
def merge(headers_or_env)
|
||||
headers = Http::Headers.new(env.dup)
|
||||
headers = Http::Headers.new(ActionDispatch::Request.new(env.dup))
|
||||
headers.merge!(headers_or_env)
|
||||
headers
|
||||
end
|
||||
|
@ -83,7 +86,10 @@ module ActionDispatch
|
|||
end
|
||||
end
|
||||
|
||||
def env; @req.env; end
|
||||
|
||||
private
|
||||
|
||||
# Converts a HTTP header name to an environment variable name if it is
|
||||
# not contained within the headers hash.
|
||||
def env_name(key)
|
||||
|
|
|
@ -170,7 +170,7 @@ module ActionDispatch
|
|||
#
|
||||
# request.headers["Content-Type"] # => "text/plain"
|
||||
def headers
|
||||
@headers ||= Http::Headers.new(@env)
|
||||
@headers ||= Http::Headers.new(self)
|
||||
end
|
||||
|
||||
# Returns a +String+ with the last requested path including their params.
|
||||
|
|
|
@ -359,10 +359,10 @@ module ActionDispatch
|
|||
|
||||
# this modifies the passed request_env directly
|
||||
if headers.present?
|
||||
Http::Headers.new(request_env).merge!(headers)
|
||||
Http::Headers.from_hash(request_env).merge!(headers)
|
||||
end
|
||||
if env.present?
|
||||
Http::Headers.new(request_env).merge!(env)
|
||||
Http::Headers.from_hash(request_env).merge!(env)
|
||||
end
|
||||
|
||||
session = Rack::Test::Session.new(_mock_session)
|
||||
|
|
|
@ -2,7 +2,7 @@ require "abstract_unit"
|
|||
|
||||
class HeaderTest < ActiveSupport::TestCase
|
||||
def make_headers(hash)
|
||||
ActionDispatch::Http::Headers.new hash
|
||||
ActionDispatch::Http::Headers.new ActionDispatch::Request.new hash
|
||||
end
|
||||
|
||||
setup do
|
||||
|
|
Loading…
Reference in a new issue