module ActionDispatch::Http::Cache::Request - actionpack-4.2.4 Documentation

# module ActionDispatch::Http::Cache::Request

### Constants

HTTP_IF_MODIFIED_SINCE
HTTP_IF_NONE_MATCH

### Public Instance Methods

etag_matches?(etag) click to toggle source

    # File lib/action_dispatch/http/cache.rb, line 30
    def etag_matches?(etag)
      if etag
        etag = etag.gsub(/^\"|\"$/, "")
        if_none_match_etags.include?(etag)
      end
    end

fresh?(response) click to toggle source

Check response freshness (Last-Modified and ETag) against request If-Modified-Since and If-None-Match conditions. If both headers are supplied, both must match, or the request is not considered fresh.

    # File lib/action_dispatch/http/cache.rb, line 40
    def fresh?(response)
      last_modified = if_modified_since
      etag          = if_none_match

      return false unless last_modified || etag

      success = true
      success &&= not_modified?(response.last_modified) if last_modified
      success &&= etag_matches?(response.etag) if etag
      success
    end

if_modified_since() click to toggle source

    # File lib/action_dispatch/http/cache.rb, line 10
    def if_modified_since
      if since = env[HTTP_IF_MODIFIED_SINCE]
        Time.rfc2822(since) rescue nil
      end
    end

if_none_match() click to toggle source

    # File lib/action_dispatch/http/cache.rb, line 16
    def if_none_match
      env[HTTP_IF_NONE_MATCH]
    end

if_none_match_etags() click to toggle source

    # File lib/action_dispatch/http/cache.rb, line 20
    def if_none_match_etags
      (if_none_match ? if_none_match.split(/\s*,\s*/) : []).collect do |etag|
        etag.gsub(/^\"|\"$/, "")
      end
    end

not_modified?(modified_at) click to toggle source

    # File lib/action_dispatch/http/cache.rb, line 26
    def not_modified?(modified_at)
      if_modified_since && modified_at && if_modified_since >= modified_at
    end