Class: Async::HTTP::Cache::Store::Vary

Inherits:
Object
  • Object
show all
Defined in:
lib/async/http/cache/store/vary.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(delegate, vary = {}) ⇒ Vary

Returns a new instance of Vary.



31
32
33
34
# File 'lib/async/http/cache/store/vary.rb', line 31

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

Instance Attribute Details

#delegateObject (readonly)

Returns the value of attribute delegate.



40
41
42
# File 'lib/async/http/cache/store/vary.rb', line 40

def delegate
  @delegate
end

Instance Method Details

#closeObject



36
37
38
# File 'lib/async/http/cache/store/vary.rb', line 36

def close
	@delegate.close
end

#insert(key, request, response) ⇒ Object



65
66
67
68
69
70
71
72
73
# 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) ⇒ Object



52
53
54
# File 'lib/async/http/cache/store/vary.rb', line 52

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

#lookup(key, request) ⇒ Object



56
57
58
59
60
61
62
63
# 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) ⇒ Object



42
43
44
45
46
47
48
49
50
# 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