aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/http/headers.rb
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2013-03-13 11:30:45 +0100
committerYves Senn <yves.senn@gmail.com>2013-03-13 16:40:47 +0100
commite2a5de2bb200773943e605cdddb9b18bbfa77e13 (patch)
tree9716965fd088c8c6a71149bd7edcb9a66e03774e /actionpack/lib/action_dispatch/http/headers.rb
parent8945be464feb8c9ec8c4e7be52e5195f17a1ef5e (diff)
downloadrails-e2a5de2bb200773943e605cdddb9b18bbfa77e13.tar.gz
rails-e2a5de2bb200773943e605cdddb9b18bbfa77e13.tar.bz2
rails-e2a5de2bb200773943e605cdddb9b18bbfa77e13.zip
refactor, `Http::Headers` stores headers in env notation
Also: cleanup, use consistent syntax for `Http::Header` and test.
Diffstat (limited to 'actionpack/lib/action_dispatch/http/headers.rb')
-rw-r--r--actionpack/lib/action_dispatch/http/headers.rb38
1 files changed, 21 insertions, 17 deletions
diff --git a/actionpack/lib/action_dispatch/http/headers.rb b/actionpack/lib/action_dispatch/http/headers.rb
index 187e83cbd9..ecf050a869 100644
--- a/actionpack/lib/action_dispatch/http/headers.rb
+++ b/actionpack/lib/action_dispatch/http/headers.rb
@@ -14,37 +14,41 @@ module ActionDispatch
include Enumerable
def initialize(env = {})
- @headers = env
+ @env = env
end
- def [](header_name)
- @headers[env_name(header_name)]
+ def [](key)
+ @env[env_name(key)]
end
- def []=(k,v); @headers[k] = v; end
- def key?(k); @headers.key? k; end
+ def []=(key, value)
+ @env[env_name(key)] = value
+ end
+
+ def key?(key); @env.key? key; end
alias :include? :key?
- def fetch(header_name, *args, &block)
- @headers.fetch env_name(header_name), *args, &block
+ def fetch(key, *args, &block)
+ @env.fetch env_name(key), *args, &block
end
def each(&block)
- @headers.each(&block)
+ @env.each(&block)
end
private
-
- # Converts a HTTP header name to an environment variable name if it is
- # not contained within the headers hash.
- def env_name(header_name)
- @headers.include?(header_name) ? header_name : cgi_name(header_name)
+ def env_name(key)
+ if key =~ HEADER_REGEXP
+ cgi_name(key)
+ else
+ key
+ end
end
- def cgi_name(k)
- k = k.upcase.gsub(/-/, '_')
- k = "HTTP_#{k.upcase.gsub(/-/, '_')}" unless NON_PREFIX_VARIABLES.include?(k)
- k
+ def cgi_name(key)
+ key = key.upcase.gsub(/-/, '_')
+ key = "HTTP_#{key}" unless NON_PREFIX_VARIABLES.include?(key)
+ key
end
end
end