diff options
| author | bozo.kopic <bozo.kopic@gmail.com> | 2017-08-16 15:11:21 +0200 |
|---|---|---|
| committer | bozo.kopic <bozo.kopic@gmail.com> | 2017-08-16 15:11:21 +0200 |
| commit | 28446d95471e74de364b53c3f24d6182fddac0e0 (patch) | |
| tree | 5cf96e6d26a8e27aef74464c6a0a3b0ab191ffff /src_py/hatter/server.py | |
| parent | 1b6052d7e74d90806650ff09153c581e7ae851eb (diff) | |
backend
Diffstat (limited to 'src_py/hatter/server.py')
| -rw-r--r-- | src_py/hatter/server.py | 46 |
1 files changed, 46 insertions, 0 deletions
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 |
