lib/rack/cache/request.rb in rtomayko-rack-cache-0.3.0 vs lib/rack/cache/request.rb in rtomayko-rack-cache-0.3.9

- old
+ new

@@ -1,37 +1,33 @@ require 'rack/request' -require 'rack/cache/headers' -require 'rack/utils/environment_headers' +require 'rack/cache/cachecontrol' module Rack::Cache + # Provides access to the HTTP request. The +request+ and +original_request+ # objects exposed by the Core caching engine are instances of this class. # # Request objects respond to a variety of convenience methods, including # everything defined by Rack::Request as well as the Headers and # RequestHeaders modules. - class Request < Rack::Request - include Rack::Cache::Headers - include Rack::Cache::RequestHeaders - # The HTTP request method. This is the standard implementation of this # method but is respecified here due to libraries that attempt to modify # the behavior to respect POST tunnel method specifiers. We always want # the real request method. def request_method @env['REQUEST_METHOD'] end - # Determine if the request's method matches any of the values - # provided: - # if request.request_method?('GET', 'POST') - # ... - # end - def request_method?(*methods) - method = request_method - methods.any? { |test| test.to_s.upcase == method } + # A CacheControl instance based on the request's Cache-Control header. + def cache_control + @cache_control ||= CacheControl.new(env['HTTP_CACHE_CONTROL']) end - alias_method :method?, :request_method? + # True when the Cache-Control/no-cache directive is present or the + # Pragma header is set to no-cache. + def no_cache? + cache_control['no-cache'] || + env['HTTP_PRAGMA'] == 'no-cache' + end end end