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