mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-06-17 02:11:44 +08:00
complex info handle
This commit is contained in:
@@ -1,41 +0,0 @@
|
||||
# ========================================================================== #
|
||||
# #
|
||||
# KVMD - The main Pi-KVM daemon. #
|
||||
# #
|
||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||
# #
|
||||
# This program is free software: you can redistribute it and/or modify #
|
||||
# it under the terms of the GNU General Public License as published by #
|
||||
# the Free Software Foundation, either version 3 of the License, or #
|
||||
# (at your option) any later version. #
|
||||
# #
|
||||
# This program is distributed in the hope that it will be useful, #
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
# GNU General Public License for more details. #
|
||||
# #
|
||||
# You should have received a copy of the GNU General Public License #
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
|
||||
# #
|
||||
# ========================================================================== #
|
||||
|
||||
|
||||
from aiohttp.web import Request
|
||||
from aiohttp.web import Response
|
||||
|
||||
from ..hw import HwManager
|
||||
|
||||
from ..http import exposed_http
|
||||
from ..http import make_json_response
|
||||
|
||||
|
||||
# =====
|
||||
class HwApi:
|
||||
def __init__(self, hw_manager: HwManager) -> None:
|
||||
self.__hw_manager = hw_manager
|
||||
|
||||
# =====
|
||||
|
||||
@exposed_http("GET", "/hw")
|
||||
async def __state_handler(self, _: Request) -> Response:
|
||||
return make_json_response(await self.__hw_manager.get_state())
|
||||
@@ -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