mirror of https://github.com/LedFx/LedFx.git
48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
import logging
|
|
|
|
from aiohttp import web
|
|
|
|
from ledfx.api import RestEndpoint
|
|
from ledfx.config import save_config
|
|
|
|
_LOGGER = logging.getLogger(__name__)
|
|
|
|
|
|
class VirtualsEndpoint(RestEndpoint):
|
|
|
|
ENDPOINT_PATH = "/api/virtuals"
|
|
|
|
async def get(self) -> web.Response:
|
|
response = {"virtuals": {"list": self._ledfx.config["virtuals"]}}
|
|
|
|
return web.json_response(data=response, status=200)
|
|
|
|
async def post(self, request) -> web.Response:
|
|
data = await request.json()
|
|
|
|
virtuals = data.get("virtuals")
|
|
if virtuals is None:
|
|
response = {
|
|
"status": "failed",
|
|
"reason": 'Required attribute "virtuals" was not provided',
|
|
}
|
|
return web.json_response(data=response, status=500)
|
|
|
|
virtuals_list = virtuals["list"]
|
|
|
|
_LOGGER.info(f"Adding virtuals list to config: {virtuals_list}")
|
|
|
|
# Update and save the configuration
|
|
self._ledfx.config["virtuals"] = virtuals_list
|
|
|
|
save_config(
|
|
config=self._ledfx.config,
|
|
config_dir=self._ledfx.config_dir,
|
|
)
|
|
|
|
response = {
|
|
"status": "success",
|
|
}
|
|
|
|
return web.json_response(data=response, status=200)
|