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

def close

def close
	@delegate.close
end

def initialize(delegate, vary = {})

def initialize(delegate, vary = {})
	@delegate = delegate
	@vary = vary
end

def insert(key, request, response)

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

def key_for(headers, vary)

def key_for(headers, vary)
	vary.map{|key| headers[key]}
end

def lookup(key, request)

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

def normalize(request)

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