diff options
author | Devaev Maxim <[email protected]> | 2020-12-25 08:35:02 +0300 |
---|---|---|
committer | Devaev Maxim <[email protected]> | 2020-12-25 08:35:02 +0300 |
commit | 4447e49abb518a4da83d6adc16ca1bb5dcba5fae (patch) | |
tree | 3edc747b961f278de277ac794783ae2a264ba270 /kvmd | |
parent | 08fc4130440001c69151884e12db1b3fb259971f (diff) |
api refactoring
Diffstat (limited to 'kvmd')
-rw-r--r-- | kvmd/apps/kvmd/api/hid.py | 19 | ||||
-rw-r--r-- | kvmd/plugins/hid/__init__.py | 9 | ||||
-rw-r--r-- | kvmd/plugins/hid/_mcu/__init__.py | 14 |
3 files changed, 24 insertions, 18 deletions
diff --git a/kvmd/apps/kvmd/api/hid.py b/kvmd/apps/kvmd/api/hid.py index 9c39ab20..8e667b79 100644 --- a/kvmd/apps/kvmd/api/hid.py +++ b/kvmd/apps/kvmd/api/hid.py @@ -69,14 +69,17 @@ class HidApi: async def __state_handler(self, _: Request) -> Response: return make_json_response(await self.__hid.get_state()) - @exposed_http("POST", "/hid/keyboard/set_params") - async def __keyboard_set_params_handler(self, request: Request) -> Response: - self.__hid.set_keyboard_output(valid_hid_keyboard_output(request.query.get("output"))) - return make_json_response() - - @exposed_http("POST", "/hid/mouse/set_params") - async def __mouse_set_params_handler(self, request: Request) -> Response: - self.__hid.set_mouse_output(valid_hid_mouse_output(request.query.get("output"))) + @exposed_http("POST", "/hid/set_params") + async def __set_params_handler(self, request: Request) -> Response: + params = { + key: validator(request.query.get(key)) + for (key, validator) in [ + ("keyboard_output", valid_hid_keyboard_output), + ("mouse_output", valid_hid_mouse_output), + ] + if request.query.get(key) is not None + } + await self.__hid.set_params(**params) # type: ignore return make_json_response() @exposed_http("POST", "/hid/set_connected") diff --git a/kvmd/plugins/hid/__init__.py b/kvmd/plugins/hid/__init__.py index 0ba82e1b..c275f075 100644 --- a/kvmd/plugins/hid/__init__.py +++ b/kvmd/plugins/hid/__init__.py @@ -25,6 +25,7 @@ from typing import Dict from typing import Iterable from typing import AsyncGenerator from typing import Type +from typing import Optional from .. import BasePlugin from .. import get_plugin_class @@ -67,11 +68,9 @@ class BaseHid(BasePlugin): def send_mouse_wheel_event(self, delta_x: int, delta_y: int) -> None: raise NotImplementedError - def set_keyboard_output(self, output: str) -> None: - _ = output - - def set_mouse_output(self, output: str) -> None: - _ = output + def set_params(self, keyboard_output: Optional[str]=None, mouse_output: Optional[str]=None) -> None: + _ = keyboard_output + _ = mouse_output def set_connected(self, connected: bool) -> None: _ = connected diff --git a/kvmd/plugins/hid/_mcu/__init__.py b/kvmd/plugins/hid/_mcu/__init__.py index 242de465..45302ba1 100644 --- a/kvmd/plugins/hid/_mcu/__init__.py +++ b/kvmd/plugins/hid/_mcu/__init__.py @@ -31,6 +31,7 @@ from typing import Dict from typing import Iterable from typing import Generator from typing import AsyncGenerator +from typing import Optional from ....logging import get_logger @@ -252,11 +253,14 @@ class BaseMcuHid(BaseHid, multiprocessing.Process): # pylint: disable=too-many- def send_mouse_wheel_event(self, delta_x: int, delta_y: int) -> None: self.__queue_event(MouseWheelEvent(delta_x, delta_y)) - def set_keyboard_output(self, output: str) -> None: - self.__queue_event(SetKeyboardOutputEvent(output), clear=True) - - def set_mouse_output(self, output: str) -> None: - self.__queue_event(SetMouseOutputEvent(output), clear=True) + def set_params(self, keyboard_output: Optional[str]=None, mouse_output: Optional[str]=None) -> None: + events: List[BaseEvent] = [] + if keyboard_output is not None: + events.append(SetKeyboardOutputEvent(keyboard_output)) + if mouse_output is not None: + events.append(SetMouseOutputEvent(mouse_output)) + for (index, event) in enumerate(events, 1): + self.__queue_event(event, clear=(index == len(events))) def set_connected(self, connected: bool) -> None: self.__queue_event(SetConnectedEvent(connected), clear=True) |