From c8a67c29c7cca57f3c385202fa2bead8aac6f730 Mon Sep 17 00:00:00 2001 From: RemiZOffAlex Date: Wed, 22 Apr 2026 13:55:51 +0300 Subject: [PATCH] Update --- src/jsonrpc/rpc.py | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/jsonrpc/rpc.py b/src/jsonrpc/rpc.py index 1ad7c18..6cbdd0e 100644 --- a/src/jsonrpc/rpc.py +++ b/src/jsonrpc/rpc.py @@ -11,6 +11,25 @@ from .exceptions import * log = logging.getLogger(__name__) +def __handler_execute(handler, query): + params = None + if 'params' in query: + params = query['params'] + if params is None: + response = handler() + elif isinstance(params, list): + response = handler(*params) + elif isinstance(params, dict): + response = handler(**params) + else: + raise InvalidParamsError( + id=query['id'], + message='Invalid params: {0}'.format(params) + ) + + return response + + class RPC: """Основной класс RPC """ @@ -94,7 +113,7 @@ class RPC: ) return result - def process(self, query): + def __execute(self, query): """Выполнение метода """ result = self.validate(query) @@ -103,7 +122,7 @@ class RPC: name = query['method'] if name not in self.__handlers: result = MethodNotFoundError( - message=f'Метод не найден: {name}', + message=f'Метод {name} не найден', id=query['id'] ) return result @@ -111,7 +130,7 @@ class RPC: handler = self.__handlers[name] try: - response = handler(query) + response = __handler_execute(handler, query) except JSONRPCError as e: log.error(traceback.format_exc()) response = InternalError( @@ -139,11 +158,11 @@ class RPC: """Вызов метода """ if isinstance(queries, dict): - result = self.process(queries) + result = self.__execute(queries) elif isinstance(queries, list): result = [] for query in queries: - response = self.process(query) + response = self.__execute(query) if response: result.append(response) return result