summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY.md1
-rw-r--r--requests_cache/models/request.py8
-rw-r--r--tests/unit/models/test_request.py2
3 files changed, 10 insertions, 1 deletions
diff --git a/HISTORY.md b/HISTORY.md
index 7eace20..a229e25 100644
--- a/HISTORY.md
+++ b/HISTORY.md
@@ -84,6 +84,7 @@ If you encounter a problem not listed here after updating to 1.0, please file a
### 0.9.5 (Unreleased)
* Fix usage of memory backend with `install_cache()`
+* Add `CachedRequest.path_url` property
* Add compatibility with cattrs 22.1
### 0.9.4 (2022-04-22)
diff --git a/requests_cache/models/request.py b/requests_cache/models/request.py
index d08ada1..a827f55 100644
--- a/requests_cache/models/request.py
+++ b/requests_cache/models/request.py
@@ -1,4 +1,5 @@
from logging import getLogger
+from urllib.parse import urlsplit
from attr import asdict, define, field, fields_dict
from requests import PreparedRequest
@@ -28,6 +29,13 @@ class CachedRequest(RichMixin):
kwargs['cookies'] = getattr(original_request, '_cookies', None)
return cls(**kwargs) # type: ignore # False positive in mypy 0.920+?
+ @property
+ def path_url(self):
+ p = urlsplit(self.url)
+ url = p.path or '/'
+ url += f'?{p.query}' if p.query else ''
+ return url
+
def copy(self) -> 'CachedRequest':
"""Return a copy of the CachedRequest"""
return self.__class__(**asdict(self))
diff --git a/tests/unit/models/test_request.py b/tests/unit/models/test_request.py
index badeb32..3834103 100644
--- a/tests/unit/models/test_request.py
+++ b/tests/unit/models/test_request.py
@@ -10,8 +10,8 @@ def test_from_request(mock_session):
expected_headers = {**default_headers(), 'Content-Length': '12', 'foo': 'bar'}
assert response.request.body == request.body == b'mock request'
- assert response.request._cookies == request.cookies == {}
assert response.request.headers == request.headers == expected_headers
assert response.request.method == request.method == 'GET'
+ assert response.request.path_url == request.path_url == '/text'
assert response.request.url == request.url == MOCKED_URL
assert response.request._cookies == request._cookies == request.cookies == {}