diff options
author | Jordan Cook <jordan.cook.git@proton.me> | 2023-03-30 19:15:30 -0500 |
---|---|---|
committer | Jordan Cook <jordan.cook.git@proton.me> | 2023-04-02 21:42:25 -0500 |
commit | d20f445419529ea0fb5d8c6e851cd7d4cc56f65f (patch) | |
tree | 5fb8a42f432cc403069de7ce170ab25881288acf /requests_cache | |
parent | a137fd6b8a8622b6652948ef9567acd080c5dd43 (diff) | |
download | requests-cache-d20f445419529ea0fb5d8c6e851cd7d4cc56f65f.tar.gz |
Don't normalize CachedResponse.url when redacting ignored params
Diffstat (limited to 'requests_cache')
-rw-r--r-- | requests_cache/cache_keys.py | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/requests_cache/cache_keys.py b/requests_cache/cache_keys.py index fa60619..a724ed5 100644 --- a/requests_cache/cache_keys.py +++ b/requests_cache/cache_keys.py @@ -142,19 +142,7 @@ def normalize_url(url: str, ignored_parameters: ParamList) -> str: """Normalize and filter a URL. This includes request parameters, IDN domains, scheme, host, port, etc. """ - # Strip query params from URL, sort and filter, and reassemble into a complete URL - url_tokens = urlparse(url) - url = urlunparse( - ( - url_tokens.scheme, - url_tokens.netloc, - url_tokens.path, - url_tokens.params, - normalize_params(url_tokens.query, ignored_parameters), - url_tokens.fragment, - ) - ) - + url = filter_url(url, ignored_parameters) return url_normalize(url) @@ -210,7 +198,7 @@ def normalize_params(value: Union[str, bytes], ignored_parameters: ParamList = N def redact_response(response: CachedResponse, ignored_parameters: ParamList) -> CachedResponse: """Redact any ignored parameters (potentially containing sensitive info) from a cached request""" if ignored_parameters: - response.url = normalize_url(response.url, ignored_parameters) + response.url = filter_url(response.url, ignored_parameters) response.request = normalize_request(response.request, ignored_parameters) # type: ignore return response @@ -240,3 +228,19 @@ def filter_sort_list(data: List, ignored_parameters: ParamList = None) -> List: if not ignored_parameters: return sorted(data) return [k for k in sorted(data) if k not in set(ignored_parameters)] + + +def filter_url(url: str, ignored_parameters: ParamList) -> str: + """Filter ignored parameters out of a URL""" + # Strip query params from URL, sort and filter, and reassemble into a complete URL + url_tokens = urlparse(url) + return urlunparse( + ( + url_tokens.scheme, + url_tokens.netloc, + url_tokens.path, + url_tokens.params, + normalize_params(url_tokens.query, ignored_parameters), + url_tokens.fragment, + ) + ) |