aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorCainã Costa <cainan.costa@gmail.com>2012-07-30 02:40:13 -0300
committerCainã Costa <cainan.costa@gmail.com>2012-07-30 02:41:45 -0300
commit7db29f900400e9f35142ede94148d3a71e651adb (patch)
treea52b638109cc66a9045275ae497ec62afa9e1fe5 /actionpack
parent19e68e9d472f81f9856cd10fba4ba75f653c90e4 (diff)
downloadrails-7db29f900400e9f35142ede94148d3a71e651adb.tar.gz
rails-7db29f900400e9f35142ede94148d3a71e651adb.tar.bz2
rails-7db29f900400e9f35142ede94148d3a71e651adb.zip
Refactor ActionDispatch::Http::Cache::Response#cache_control_headers.
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_dispatch/http/cache.rb30
1 files changed, 19 insertions, 11 deletions
diff --git a/actionpack/lib/action_dispatch/http/cache.rb b/actionpack/lib/action_dispatch/http/cache.rb
index 0b895e7860..647a9e3c19 100644
--- a/actionpack/lib/action_dispatch/http/cache.rb
+++ b/actionpack/lib/action_dispatch/http/cache.rb
@@ -86,21 +86,29 @@ module ActionDispatch
CACHE_CONTROL = "Cache-Control".freeze
SPESHUL_KEYS = %w[extras no-cache max-age public must-revalidate]
+ def cache_control_segments
+ if cache_control = self[CACHE_CONTROL]
+ cache_control.delete(' ').split(',')
+ else
+ []
+ end
+ end
+
def cache_control_headers
cache_control = {}
- if cc = self[CACHE_CONTROL]
- cc.delete(' ').split(',').each do |segment|
- directive, argument = segment.split('=', 2)
- case directive
- when *SPESHUL_KEYS
- key = directive.tr('-', '_')
- cache_control[key.to_sym] = argument || true
- else
- cache_control[:extras] ||= []
- cache_control[:extras] << segment
- end
+
+ cache_control_segments.each do |segment|
+ directive, argument = segment.split('=', 2)
+
+ if SPESHUL_KEYS.include? directive
+ key = directive.tr('-', '_')
+ cache_control[key.to_sym] = argument || true
+ else
+ cache_control[:extras] ||= []
+ cache_control[:extras] << segment
end
end
+
cache_control
end