Permalink
Browse files

Merge pull request #7198 from cfcosta/refactor-cache_control_headers

Refactor ActionDispatch::Http::Cache::Response#cache_control_headers
  • Loading branch information...
2 parents 0899be5 + 7db29f9 commit 69f62ecaff66c25b62c5d9cad41c62fc74d717c5 @rafaelfranca rafaelfranca committed Jul 30, 2012
Showing with 19 additions and 11 deletions.
  1. +19 −11 actionpack/lib/action_dispatch/http/cache.rb
@@ -86,21 +86,29 @@ def etag=(etag)
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

0 comments on commit 69f62ec

Please sign in to comment.