From f7a7811607a9ecd51842a75d7ad1bc98322372d3 Mon Sep 17 00:00:00 2001 From: Christopher Rhodes <christopher.rhodes@embl.de> Date: Wed, 22 May 2024 16:36:12 +0200 Subject: [PATCH] Drop none-valued query parameters by default --- model_server/clients/imagej/adapter.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/model_server/clients/imagej/adapter.py b/model_server/clients/imagej/adapter.py index b03ee25d..a68dc462 100644 --- a/model_server/clients/imagej/adapter.py +++ b/model_server/clients/imagej/adapter.py @@ -13,18 +13,27 @@ HOST = '127.0.0.1' PORT = 6221 uri = 'http://{}:{}/'.format(HOST, PORT) -def hit_endpoint(method, endpoint, params=None, body=None): +def hit_endpoint(method, endpoint, params=None, body=None, drop_none=True): """ Python 2.7 implementation of HTTP client :param method: (str) either 'GET' or 'PUT' :param endpoint: (str) endpoint of HTTP request :param params: (dict) of parameters that are embedded in client request URL :param body: (dict) of parameters that JSON-encoded and attached as payload in request + :param drop_none: (bool) remove (presumably optional) parameters with value equal to None :return: (dict) of response status and content, formatted as dict if request is successful """ connection = httplib.HTTPConnection(HOST, PORT) if not method in ['GET', 'PUT']: raise Exception('Can only handle GET and PUT requests') + k_pop = [] + if drop_none: + for k, v in params.items(): + if v is None: + k_pop.append(k) + for ki in k_pop: + params.pop(ki) + if params: url = endpoint + '?' + urllib.urlencode(params) else: -- GitLab