# -*- encoding: utf-8 -*- import secrets from aiohttp.web import HTTPFound from aiohttp_session import get_session class ClientStore(dict): """ This class is responsible to hold the clients used by the active connections. """ def __init__(self, login_route): self.login_route = login_route self.store = dict() async def get_client(self, request): session = await get_session(request) client_id = session.get("client_id") if client_id is None: raise HTTPFound(self.login_route) client = self.store.get(client_id) if client is None: raise HTTPFound(self.login_route) return client async def set_client(self, request, client): session = await get_session(request) client_id = secrets.token_hex(16) self.store[client_id] = client session["client_id"] = client_id