class Async::HTTP::Cache::Store::Vary

Attributes

delegate[R]

Public Class Methods

new(delegate, vary = {}) click to toggle source
# File lib/async/http/cache/store/vary.rb, line 31
def initialize(delegate, vary = {})
        @delegate = delegate
        @vary = vary
end

Public Instance Methods

close() click to toggle source
# File lib/async/http/cache/store/vary.rb, line 36
def close
        @delegate.close
end
insert(key, request, response) click to toggle source
# File lib/async/http/cache/store/vary.rb, line 65
def insert(key, request, response)
        if vary = response.headers[VARY]&.sort
                @vary[key] = vary
                
                key = key + key_for(request.headers, vary)
        end
        
        @delegate.insert(key, request, response)
end
key_for(headers, vary) click to toggle source
# File lib/async/http/cache/store/vary.rb, line 52
def key_for(headers, vary)
        vary.map{|key| headers[key]}
end
lookup(key, request) click to toggle source
# File lib/async/http/cache/store/vary.rb, line 56
def lookup(key, request)
        if vary = @vary[key]
                # We should provide user-supported normalization here:
                key = key + key_for(request.headers, vary)
        end
        
        return @delegate.lookup(key, request)
end
normalize(request) click to toggle source
# File lib/async/http/cache/store/vary.rb, line 42
def normalize(request)
        if accept_encoding = request.headers[ACCEPT_ENCODING]
                if accept_encoding.include?("gzip")
                        request.headers.set(ACCEPT_ENCODING, "gzip")
                else
                        request.headers.delete(ACCEPT_ENCODING)
                end
        end
end