@@ -107,7 +107,9 @@ def __init__(
107107 if self .timeout < 1 :
108108 raise ValueError ("Timeout value must be at least 1 second" )
109109
110- def _call (self , url : str , method : str , params : list [Any ], context : dict [str , Any ] | None ):
110+ def _call (
111+ self , url : str , method : str , params : list [Any ], context : dict [str , Any ] | None = None
112+ ):
111113 arg_hash = {"method" : method ,
112114 "params" : params ,
113115 "version" : "1.1" ,
@@ -149,6 +151,21 @@ def _call(self, url: str, method: str, params: list[Any], context: dict[str, Any
149151 return resp ["result" ][0 ]
150152 return resp ["result" ]
151153
154+ def _get_service_url (self , service_method : str , service_version : str | None ):
155+ if not self .lookup_url :
156+ return self .url
157+ service = service_method .split ("." )[0 ]
158+ service_status_ret = self ._call (
159+ self .url , "ServiceWizard.get_service_status" ,
160+ [{"module_name" : service , "version" : service_version }]
161+ )
162+ return service_status_ret ["url" ]
163+
164+ def _set_up_context (self , service_ver : str = None ):
165+ if service_ver :
166+ return {"service_ver" : service_ver }
167+ return None
168+
152169 def call_method (self , service_method : str , args : list [Any ], * , service_ver : str | None = None ):
153170 """
154171 Call a standard or dynamic service synchronously.
@@ -159,8 +176,6 @@ def call_method(self, service_method: str, args: list[Any], *, service_ver: str
159176 service_ver - the version of the service to run, e.g. a git hash
160177 or dev/beta/release.
161178 """
162- # TDOO NEXT implement dynamic methods
163- #url = self._get_service_url(service_method, service_ver)
164- #context = self._set_up_context(service_ver)
165- url = self .url
166- return self ._call (url , service_method , args , None )
179+ url = self ._get_service_url (service_method , service_ver )
180+ context = self ._set_up_context (service_ver )
181+ return self ._call (url , service_method , args , context )
0 commit comments