From d5fdd5c3e11cf2b9836bc0f444763acb8955ef7a Mon Sep 17 00:00:00 2001 From: quentin on chickenita Date: Wed, 19 Jul 2023 17:26:25 +0200 Subject: [PATCH] HttpRequest Allow callable params --- pypeman/contrib/http.py | 4 ++++ pypeman/tests/test_nodes.py | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pypeman/contrib/http.py b/pypeman/contrib/http.py index 663a5557..8f1efc82 100644 --- a/pypeman/contrib/http.py +++ b/pypeman/contrib/http.py @@ -145,6 +145,7 @@ class HttpRequest(nodes.BaseNode): :param verify: verify ssl. Default True. :param params: get params in dict. List for multiple elements, ex : {'param1': 'omega', param2: ['alpha', 'beta']} + The key can be a function that takes a msg as input param :param client_cert: tuple with .crt and .key path :param binary: bool, Get response content as bytes :param send_as_json: bool, If the method is a PATCH/POST/PUT, send data as json @@ -220,8 +221,11 @@ async def handle_request(self, msg): get_params = None if params: + params = params.copy() get_params = [] for key, param in params.items(): + if callable(param): + param = param(msg) if isinstance(param, list): for value in param: get_params.append((key, value)) diff --git a/pypeman/tests/test_nodes.py b/pypeman/tests/test_nodes.py index 8601ea17..34d95368 100644 --- a/pypeman/tests/test_nodes.py +++ b/pypeman/tests/test_nodes.py @@ -438,12 +438,11 @@ def test_httprequest_node(self): ('zeta', 'un'), ('zeta', 'deux'), ('zeta', 'trois'), - # ('omega', 'meta_params') ] req_kwargs2['data'] = content1 args_headers = {'args_headers': 'args_headers'} - args_params = {'theta': ['uno', 'dos']} + args_params = {'theta': ['uno', 'dos'], 'omega': tstfct2} http_node2 = nodes.HttpRequest( url=url, method='post', @@ -474,6 +473,7 @@ def test_httprequest_node(self): req_kwargs3['params'] = [ ('theta', 'uno'), ('theta', 'dos'), + ('omega', 'fctname'), ] req_kwargs3['headers'] = args_headers req_kwargs3['data'] = content1 @@ -524,7 +524,7 @@ def test_httprequest_node(self): Test 3: - post in node args, - object BasicAuth for auth, - - list in dict params from args, + - list in dict params from args + callable str param, - headers from args - client_cert """