Class: HTTPX::Plugins::ResponseCache::Store
- Inherits:
-
Object
- Object
- HTTPX::Plugins::ResponseCache::Store
- Defined in:
- lib/httpx/plugins/response_cache/store.rb
Direct Known Subclasses
Instance Method Summary collapse
- #cache(request, response) ⇒ Object
- #cached?(request) ⇒ Boolean
- #clear ⇒ Object
-
#initialize ⇒ Store
constructor
A new instance of Store.
- #lookup(request) ⇒ Object
- #prepare(request) ⇒ Object
Constructor Details
#initialize ⇒ Store
Returns a new instance of Store.
8 9 10 11 |
# File 'lib/httpx/plugins/response_cache/store.rb', line 8 def initialize @store = {} @store.extend(Mutex_m) end |
Instance Method Details
#cache(request, response) ⇒ Object
29 30 31 32 33 |
# File 'lib/httpx/plugins/response_cache/store.rb', line 29 def cache(request, response) return unless ResponseCache.cacheable_request?(request) && ResponseCache.cacheable_response?(response) _set(request, response) end |
#cached?(request) ⇒ Boolean
25 26 27 |
# File 'lib/httpx/plugins/response_cache/store.rb', line 25 def cached?(request) lookup(request) end |
#clear ⇒ Object
13 14 15 |
# File 'lib/httpx/plugins/response_cache/store.rb', line 13 def clear @store.synchronize { @store.clear } end |
#lookup(request) ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/httpx/plugins/response_cache/store.rb', line 17 def lookup(request) responses = _get(request) return unless responses responses.find(&method(:match_by_vary?).curry(2)[request]) end |
#prepare(request) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/httpx/plugins/response_cache/store.rb', line 35 def prepare(request) cached_response = lookup(request) return unless cached_response return unless match_by_vary?(request, cached_response) if !request.headers.key?("if-modified-since") && (last_modified = cached_response.headers["last-modified"]) request.headers.add("if-modified-since", last_modified) end if !request.headers.key?("if-none-match") && (etag = cached_response.headers["etag"]) # rubocop:disable Style/GuardClause request.headers.add("if-none-match", etag) end end |