mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-08 16:53:23 +00:00
Add ability to filter post data parameters
This commit is contained in:
committed by
Ivan Malison
parent
0dd7b05990
commit
0def349420
@@ -1,4 +1,6 @@
|
||||
from six import BytesIO
|
||||
from six.moves.urllib.parse import urlparse, urlencode, urlunparse
|
||||
from collections import OrderedDict
|
||||
import copy
|
||||
|
||||
|
||||
@@ -22,3 +24,17 @@ def remove_query_parameters(request, query_parameters_to_remove):
|
||||
uri_parts[4] = urlencode(new_query)
|
||||
request.uri = urlunparse(uri_parts)
|
||||
return request
|
||||
|
||||
|
||||
def remove_post_data_parameters(request, post_data_parameters_to_remove):
|
||||
if request.method == 'POST' and not isinstance(request.body, BytesIO):
|
||||
post_data = OrderedDict()
|
||||
for k, sep, v in [p.partition(b'=') for p in request.body.split(b'&')]:
|
||||
if k in post_data:
|
||||
post_data[k].append(v)
|
||||
elif len(k) > 0 and k.decode('utf-8') not in post_data_parameters_to_remove:
|
||||
post_data[k] = [v]
|
||||
request.body = b'&'.join(
|
||||
b'='.join([k, v])
|
||||
for k, vals in post_data.items() for v in vals)
|
||||
return request
|
||||
|
||||
Reference in New Issue
Block a user