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