summaryrefslogtreecommitdiff
path: root/requests_cache
diff options
context:
space:
mode:
authorJordan Cook <jordan.cook@pioneer.com>2021-03-31 20:27:59 -0500
committerJordan Cook <jordan.cook@pioneer.com>2021-03-31 20:32:23 -0500
commitd5a40677cc4754f1224f3afbc266adb1caa5c37b (patch)
tree283cd58427fe2e783d85eb976ce374ed255e0a71 /requests_cache
parentbf8953ed5794e07322b679d14fd78069659f9046 (diff)
downloadrequests-cache-d5a40677cc4754f1224f3afbc266adb1caa5c37b.tar.gz
Rename 'add_key_mapping' to 'save_redirect' and take a request instead of a cache key
Diffstat (limited to 'requests_cache')
-rw-r--r--requests_cache/backends/base.py13
-rw-r--r--requests_cache/cache_keys.py8
-rw-r--r--requests_cache/core.py6
3 files changed, 14 insertions, 13 deletions
diff --git a/requests_cache/backends/base.py b/requests_cache/backends/base.py
index 09e24c7..4f34fa2 100644
--- a/requests_cache/backends/base.py
+++ b/requests_cache/backends/base.py
@@ -6,6 +6,7 @@ from logging import getLogger
from typing import Iterable, List, Union
import requests
+from requests.models import PreparedRequest
from ..cache_keys import create_key, url_to_key
from ..response import AnyResponse, CachedResponse, ExpirationTime
@@ -41,16 +42,16 @@ class BaseCache:
"""
self.responses[key] = CachedResponse(response, expire_after=expire_after)
- def add_key_mapping(self, new_key: str, key_to_response: str):
+ def save_redirect(self, request: PreparedRequest, response_key: str):
"""
- Adds mapping of `new_key` to `key_to_response` to make it possible to
- associate many keys with single response
+ Map a redirect request to a response. This makes it possible to associate many keys with a
+ single response.
Args:
- new_key: New resource key (e.g. url from redirect)
- key_to_response: Key which can be found in :attr:`responses`
+ request: Request object for redirect URL
+ response_key: Cache key which can be found in ``responses``
"""
- self.redirects[new_key] = key_to_response
+ self.redirects[self.create_key(request)] = response_key
def get_response(self, key: str, default=None) -> CachedResponse:
"""Retrieves response for `key` if it's stored in cache, otherwise returns `default`
diff --git a/requests_cache/cache_keys.py b/requests_cache/cache_keys.py
index 71988a9..951e192 100644
--- a/requests_cache/cache_keys.py
+++ b/requests_cache/cache_keys.py
@@ -26,10 +26,10 @@ def create_key(
body = remove_ignored_body_params(request, ignored_params)
if body:
key.update(_encode(body))
- else:
- if include_get_headers and request.headers != DEFAULT_HEADERS:
- for name, value in normalize_dict(request.headers).items():
- key.update(_encode(f'{name}={value}'))
+ if include_get_headers and request.headers != DEFAULT_HEADERS:
+ for name, value in normalize_dict(request.headers).items():
+ key.update(_encode(f'{name}={value}'))
+
return key.hexdigest()
diff --git a/requests_cache/core.py b/requests_cache/core.py
index ebfa3e7..c17425d 100644
--- a/requests_cache/core.py
+++ b/requests_cache/core.py
@@ -98,15 +98,15 @@ class CacheMixin:
return response
# If the request has been filtered out, delete previously cached response if it exists
- main_key = self.cache.create_key(response.request)
+ cache_key = self.cache.create_key(response.request)
if not response.from_cache and not self.filter_fn(response):
logger.info(f'Deleting filtered response for URL: {response.url}')
- self.cache.delete(main_key)
+ self.cache.delete(cache_key)
return response
# Cache redirect history
for r in response.history:
- self.cache.add_key_mapping(self.cache.create_key(r.request), main_key)
+ self.cache.save_redirect(r.request, cache_key)
return response
def send(self, request: PreparedRequest, **kwargs) -> AnyResponse: