Update src/jsonrpc/__init__.py

This commit is contained in:
2025-04-14 09:43:17 +03:00
parent 9f9134ca98
commit 0373bea424

View File

@@ -32,19 +32,12 @@ class Method:
self.middlewares = middlewares
self.debug = debug
def __call__(self, query):
def exec_function(self, query):
params = None
if 'params' in query:
params = query['params']
if self.debug:
log.error(params)
if isinstance(self.middlewares, list):
for item in self.middlewares:
item(query)
elif callable(self.middlewares):
self.middlewares(query)
if params is None:
response = self.function()
elif isinstance(params, list):
@@ -59,6 +52,23 @@ class Method:
return response
def __call__(self, query):
if isinstance(self.middlewares, list):
i = iter(self.middlewares)
onion = self.exec_function
while (handler := next(i, None)):
onion = handler(onion)
response = onion(query)
return response
elif callable(self.middlewares):
middleware = self.middlewares(self.exec_function)
response = middleware(query)
return response
response = self.exec_function(query)
return response
def __repr__(self):
return '<{}>'.format(self.function)