mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-03-17 08:26:54 +08:00
complex info handle
This commit is contained in:
@@ -20,9 +20,16 @@
|
||||
# ========================================================================== #
|
||||
|
||||
|
||||
import asyncio
|
||||
|
||||
from typing import List
|
||||
|
||||
from aiohttp.web import Request
|
||||
from aiohttp.web import Response
|
||||
|
||||
from ....validators import check_string_in_list
|
||||
from ....validators.basic import valid_string_list
|
||||
|
||||
from ..info import InfoManager
|
||||
|
||||
from ..http import exposed_http
|
||||
@@ -37,5 +44,18 @@ class InfoApi:
|
||||
# =====
|
||||
|
||||
@exposed_http("GET", "/info")
|
||||
async def __state_handler(self, _: Request) -> Response:
|
||||
return make_json_response(await self.__info_manager.get_state())
|
||||
async def __common_state_handler(self, request: Request) -> Response:
|
||||
fields = self.__valid_info_fields(request)
|
||||
results = dict(zip(fields, await asyncio.gather(*[
|
||||
self.__info_manager.get_submanager(field).get_state()
|
||||
for field in fields
|
||||
])))
|
||||
return make_json_response(results)
|
||||
|
||||
def __valid_info_fields(self, request: Request) -> List[str]:
|
||||
subs = self.__info_manager.get_subs()
|
||||
return (sorted(set(valid_string_list(
|
||||
arg=request.query.get("fields", ",".join(subs)),
|
||||
subval=(lambda field: check_string_in_list(field, "info field", subs)),
|
||||
name="info fields list",
|
||||
))) or subs)
|
||||
|
||||
Reference in New Issue
Block a user