From 1ab8744c2d8014b2bc7d549aba66dae4d53c1842 Mon Sep 17 00:00:00 2001 From: egalvis Date: Mon, 27 Nov 2023 10:29:17 -0500 Subject: [PATCH] feat(api): :sparkles: New endpoint to set variables in a menuflow room --- menuflow/api/client.py | 17 +++++++++++++++++ menuflow/api/responses.py | 4 ++++ 2 files changed, 21 insertions(+) diff --git a/menuflow/api/client.py b/menuflow/api/client.py index b5e9fe2..35aadb8 100644 --- a/menuflow/api/client.py +++ b/menuflow/api/client.py @@ -1,6 +1,7 @@ from __future__ import annotations from json import JSONDecodeError +from typing import Dict from aiohttp import web from mautrix.client import Client as MatrixClient @@ -8,6 +9,7 @@ from mautrix.types import UserID from ..menu import MenuClient +from ..room import Room from .base import routes from .responses import resp @@ -55,3 +57,18 @@ async def create_client(request: web.Request) -> web.Response: except JSONDecodeError: return resp.body_not_json return await _create_client(None, data) + + +@routes.post("/room/{room_id}/set_variables") +async def set_variables(request: web.Request) -> web.Response: + try: + data: Dict = await request.json() + except JSONDecodeError: + return resp.body_not_json + room_id = request.match_info["room_id"] + room = await Room.get_by_room_id(room_id) + variables = data.get("variables", {}) + + await room.set_variables(variables=variables) + + return resp.ok diff --git a/menuflow/api/responses.py b/menuflow/api/responses.py index 0de7d65..9cda8f2 100644 --- a/menuflow/api/responses.py +++ b/menuflow/api/responses.py @@ -80,6 +80,10 @@ def user_exists(self) -> web.Response: status=HTTPStatus.CONFLICT, ) + @property + def ok(self) -> web.Response: + return web.json_response({}, status=HTTPStatus.OK) + @staticmethod def created(data: dict) -> web.Response: return web.json_response(data, status=HTTPStatus.CREATED)