diff --git a/vcr/filters.py b/vcr/filters.py index 627dbd4..b9c8b0e 100644 --- a/vcr/filters.py +++ b/vcr/filters.py @@ -1,4 +1,4 @@ -from six.moves.urllib.parse import urlparse, parse_qsl, urlencode +from six.moves.urllib.parse import urlparse, urlencode, urlunparse import copy @@ -11,15 +11,14 @@ def _remove_headers(request, headers_to_remove): def _remove_query_parameters(request, query_parameters_to_remove): - if not hasattr(request, 'path' or not query_parameters_to_remove): - return request - url = urlparse(request.url) - q = parse_qsl(url.query) - q = [(k, v) for k, v in q if k not in query_parameters_to_remove] - if q: - request.path = url.path + '?' + urlencode(q) - else: - request.path = url.path + query = request.query + new_query = [(k, v) for (k, v) in query + if k not in query_parameters_to_remove] + if len(new_query) != len(query): + uri_parts = list(urlparse(request.uri)) + uri_parts[4] = urlencode(new_query) + request.uri = urlunparse(uri_parts) + print urlunparse(uri_parts) return request