Update src/jsonrpc/__init__.py
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user