diff options
author | Jordan Cook <jordan.cook@pioneer.com> | 2021-09-15 11:49:48 -0500 |
---|---|---|
committer | Jordan Cook <jordan.cook@pioneer.com> | 2021-09-15 11:49:48 -0500 |
commit | 1a6881aa4d44d41fef9338c5b17d8a2cf6be6949 (patch) | |
tree | c12cc3fb14d781b77359ed900fddcc103a401e7c /requests_cache/cache_keys.py | |
parent | e0e16ceac849bbbc691bf816b1e66ba952701aae (diff) | |
download | requests-cache-1a6881aa4d44d41fef9338c5b17d8a2cf6be6949.tar.gz |
Redact ingored_parameters from CachedResponse.url
Diffstat (limited to 'requests_cache/cache_keys.py')
-rw-r--r-- | requests_cache/cache_keys.py | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/requests_cache/cache_keys.py b/requests_cache/cache_keys.py index e8c7f48..d8f787c 100644 --- a/requests_cache/cache_keys.py +++ b/requests_cache/cache_keys.py @@ -49,7 +49,7 @@ def create_key( key.update(encode(kwargs.get('verify', True))) # Add filtered/normalized URL + request params - url = remove_ignored_url_params(request, ignored_parameters) + url = remove_ignored_url_params(request.url, ignored_parameters) key.update(encode(url_normalize(url))) # Add filtered request body @@ -81,12 +81,13 @@ def get_matched_headers( def remove_ignored_headers( - request: AnyRequest, ignored_parameters: Optional[Iterable[str]] + headers: Mapping, ignored_parameters: Optional[Iterable[str]] ) -> CaseInsensitiveDict: """Remove any ignored request headers""" if not ignored_parameters: - return request.headers - headers = CaseInsensitiveDict(request.headers.copy()) + return CaseInsensitiveDict(headers) + + headers = CaseInsensitiveDict(headers) for k in ignored_parameters: headers.pop(k, None) return headers @@ -98,21 +99,29 @@ def remove_ignored_params( """Remove ignored parameters from request URL, body, and headers""" if not ignored_parameters: return request - request.headers = remove_ignored_headers(request, ignored_parameters) - request.url = remove_ignored_url_params(request, ignored_parameters) + request.headers = remove_ignored_headers(request.headers, ignored_parameters) + request.url = remove_ignored_url_params(request.url, ignored_parameters) request.body = remove_ignored_body_params(request, ignored_parameters) return request -def remove_ignored_url_params(request: AnyRequest, ignored_parameters: Optional[Iterable[str]]) -> str: +def remove_ignored_url_params(url: Optional[str], ignored_parameters: Optional[Iterable[str]]) -> str: """Remove any ignored request parameters from the URL""" - url_str = str(request.url) - if not ignored_parameters: - return url_str - - url = urlparse(url_str) - query = _filter_params(parse_qsl(url.query), ignored_parameters) - return urlunparse((url.scheme, url.netloc, url.path, url.params, urlencode(query), url.fragment)) + if not ignored_parameters or not url: + return url or '' + + url_tokens = urlparse(url) + query = _filter_params(parse_qsl(url_tokens.query), ignored_parameters) + return urlunparse( + ( + url_tokens.scheme, + url_tokens.netloc, + url_tokens.path, + url_tokens.params, + urlencode(query), + url_tokens.fragment, + ) + ) def remove_ignored_body_params( |