From 28446d95471e74de364b53c3f24d6182fddac0e0 Mon Sep 17 00:00:00 2001 From: "bozo.kopic" Date: Wed, 16 Aug 2017 15:11:21 +0200 Subject: backend --- src_py/hatter/server.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src_py/hatter/server.py (limited to 'src_py/hatter/server.py') diff --git a/src_py/hatter/server.py b/src_py/hatter/server.py new file mode 100644 index 0000000..894d101 --- /dev/null +++ b/src_py/hatter/server.py @@ -0,0 +1,46 @@ +import asyncio +import aiohttp.web + + +async def create_web_server(backend, host, port, webhook_path, web_path): + srv = WebServer() + srv._backend = backend + srv._app = aiohttp.web.Application() + srv._app.router.add_route( + 'GET', '/', lambda req: aiohttp.web.HTTPFound('/index.html')) + srv._app.router.add_route('*', '/ws', srv._ws_handler) + srv._app.router.add_route('POST', webhook_path, srv._webhook_handler) + srv._app.router.add_static('/', web_path) + srv._app_handler = srv._app.make_handler() + srv._srv = await asyncio.get_event_loop().create_server( + srv._app_handler, host=host, port=port) + return srv + + +class WebServer: + + async def async_close(self): + self._srv.close() + await self._srv.wait_closed() + await self._app.shutdown() + await self._app_handler.finish_connections(0) + await self._app.cleanup() + + async def _ws_handler(self, request): + ws = aiohttp.web.WebSocketResponse() + await ws.prepare(request) + client = Client(self._backend, ws) + await client.run() + return ws + + async def _webhook_handler(self, request): + pass + + +class Client: + + def __init__(self, backend, ws): + pass + + async def run(self): + pass -- cgit v1.2.3-70-g09d2