@@ -37,6 +37,30 @@ def __enter__(self):
3737 def __exit__ (self , type , value , traceback ):
3838 self .enabled = False
3939
40+ class PayloadOverrider :
41+ def __init__ (self ):
42+ self .modifier = None
43+ self .enabled = False
44+
45+ def __enter__ (self ):
46+ self .enabled = True
47+ return self
48+
49+ def __exit__ (self , type , value , traceback ):
50+ self .modifier = None
51+ self .enabled = False
52+
53+ def __call__ (self , modifier ):
54+ self .modifier = modifier
55+ return self
56+
57+ def get_overrided_payload (self , original_payload ):
58+ if callable (self .modifier ):
59+ return self .modifier (original_payload )
60+ else :
61+ return self .modifier
62+
63+
4064 def __init__ (self , conn , config = default_client_config , request_timeout = None ):
4165 self .conn = conn
4266 self .config = dict (config ) # Makes a copy of given configuration
@@ -45,6 +69,7 @@ def __init__(self, conn, config=default_client_config, request_timeout=None):
4569 if request_timeout is not None :
4670 self .config ['request_timeout' ] = request_timeout
4771 self .suppress_positive_response = Client .SuppressPositiveResponse ()
72+ self .payload_override = Client .PayloadOverrider ()
4873 self .last_response = None
4974
5075 self .refresh_config ()
@@ -1435,6 +1460,9 @@ def send_request(self, request, timeout=-1):
14351460 else :
14361461 payload = request .get_payload ()
14371462
1463+ if self .payload_override .enabled :
1464+ payload = self .payload_override .get_overrided_payload (payload )
1465+
14381466 if self .suppress_positive_response .enabled and not request .service .use_subfunction ():
14391467 self .logger .warning ('SuppressPositiveResponse cannot be used for service %s. Ignoring' % (request .service .get_name ()))
14401468
0 commit comments