From 7e450598899d011c0ae832df6d6ff9fa9ed9cb28 Mon Sep 17 00:00:00 2001 From: RemiZOffAlex Date: Thu, 22 Jan 2026 18:50:42 +0300 Subject: [PATCH] Update --- src/jsonrpc/backend/aiohttp.py | 39 ++++++++++++++++++++++++--- src/jsonrpc/templates/api_browse.html | 9 ++++--- src/jsonrpc/templates/api_browse.js | 16 +++++------ src/jsonrpc/templates/app.js | 6 +++++ 4 files changed, 56 insertions(+), 14 deletions(-) create mode 100644 src/jsonrpc/templates/app.js diff --git a/src/jsonrpc/backend/aiohttp.py b/src/jsonrpc/backend/aiohttp.py index 85e64ea..5d057f6 100644 --- a/src/jsonrpc/backend/aiohttp.py +++ b/src/jsonrpc/backend/aiohttp.py @@ -2,6 +2,7 @@ __author__ = 'RemiZOffAlex' __email__ = 'remizoffalex@mail.ru' import json +import asyncio import jinja2 import logging import aiohttp_jinja2 @@ -21,21 +22,43 @@ class APIHandler: def __init__( self, jsonrpc, - debug: bool = False + debug: bool = False, + **kwargs ): self.jsonrpc = jsonrpc self.debug = debug + self.__kwargs = kwargs if self.debug: log.debug('Connect JSON-RPC to aiohttp complete') @aiohttp_jinja2.template('api_browse.html') async def get(self, request) -> Response: pagedata = { - 'title': 'API Browse', - 'request': request + 'TITLE': 'API Browse', + 'REQUEST': request, + 'URL': '/api' } + for key in self.__kwargs: + pagedata[key] = self.__kwargs[key] return pagedata + # @aiohttp_jinja2.template('api_browse.js') + async def app_js(self, request) -> Response: + pagedata = { + 'TITLE': 'API Browse', + 'REQUEST': request, + 'URL': '/api' + } + for key in self.__kwargs: + pagedata[key] = self.__kwargs[key] + response = await aiohttp_jinja2.render_template_async( + 'api_browse.js', + request, + pagedata + ) + response.headers['Content-Type'] = 'application/javascript; charset=utf-8' + return response + async def post(self, request) -> Response: try: if self.debug: @@ -61,6 +84,16 @@ class APIHandler: ) +def template_init(app): + aiohttp_jinja2.setup( + app, + enable_async=True, + loader=jinja2.FileSystemLoader( + workdir / 'templates' + ) + ) + + def api_init(app, jsonrpc: JSONRPC, rule: str = '/api'): aiohttp_jinja2.setup( app, diff --git a/src/jsonrpc/templates/api_browse.html b/src/jsonrpc/templates/api_browse.html index f471a6d..a5e5c26 100644 --- a/src/jsonrpc/templates/api_browse.html +++ b/src/jsonrpc/templates/api_browse.html @@ -1,15 +1,18 @@ {% extends "skeleton.html" %} {% block content %} -

API (JSON-RPC 2.0)

+

API (JSON-RPC 3.0)


-

Браузер для API (JSON-RPC 2.0) поможет просмотреть список поддерживаемых методов, позволит отправить запросы, получить данные и отобразить результаты.

+

Браузер для API (JSON-RPC 3.0) поможет просмотреть список поддерживаемых методов, позволит отправить запросы, получить данные и отобразить результаты.

-{% include '/inc/js-stub.html' %} +

Нужна поддержка JavaScript

{% endblock %} + +
{{ REQUEST }}
+ {% block breadcrumb %}