Update src/jsonrpc/__init__.py
This commit is contained in:
+18
-8
@@ -32,19 +32,12 @@ class Method:
|
|||||||
self.middlewares = middlewares
|
self.middlewares = middlewares
|
||||||
self.debug = debug
|
self.debug = debug
|
||||||
|
|
||||||
def __call__(self, query):
|
def exec_function(self, query):
|
||||||
params = None
|
params = None
|
||||||
if 'params' in query:
|
if 'params' in query:
|
||||||
params = query['params']
|
params = query['params']
|
||||||
if self.debug:
|
if self.debug:
|
||||||
log.error(params)
|
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:
|
if params is None:
|
||||||
response = self.function()
|
response = self.function()
|
||||||
elif isinstance(params, list):
|
elif isinstance(params, list):
|
||||||
@@ -59,6 +52,23 @@ class Method:
|
|||||||
|
|
||||||
return response
|
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):
|
def __repr__(self):
|
||||||
return '<{}>'.format(self.function)
|
return '<{}>'.format(self.function)
|
||||||
|
|||||||
Reference in New Issue
Block a user