From 668eb581c42d0cf62fd7b608006ae62fa57e62de Mon Sep 17 00:00:00 2001 From: timotheyca Date: Mon, 29 Nov 2021 17:23:15 +0300 Subject: [PATCH] V6D1TokensAppFactory --- v6d1tokens/app.py | 76 +++++++++++++++++----------------------- v6d1tokens/run-server.py | 5 ++- 2 files changed, 35 insertions(+), 46 deletions(-) diff --git a/v6d1tokens/app.py b/v6d1tokens/app.py index ec8d079..f492f09 100644 --- a/v6d1tokens/app.py +++ b/v6d1tokens/app.py @@ -4,54 +4,44 @@ from aiohttp import web from nacl.exceptions import BadSignatureError from v6d0auth import certs -__all__ = ('get_app',) +__all__ = ('V6D1TokensAppFactory',) + +from v6d0auth.appfactory import AppFactory from v6d1tokens.tdb import TDB -def define_routes(routes: web.RouteTableDef, tdb: TDB): - print(certs.vkey.encode().hex()) +class V6D1TokensAppFactory(AppFactory): + def __init__(self, tdb: TDB): + self.tdb = tdb - @routes.get('/') - async def home(_request: web.Request): - return web.Response(body='v6d1tokens\n') + def define_routes(self, routes: web.RouteTableDef): + print(certs.vkey.encode().hex()) - @routes.post('/reg') - async def reg(request: web.Request): - try: - await tdb.reg(await request.read()) - except BadSignatureError: - raise web.HTTPUnauthorized - except json.JSONDecodeError: - raise web.HTTPBadRequest - else: - raise web.HTTPOk + @routes.get('/') + async def home(_request: web.Request): + return web.Response(body='v6d1tokens\n') - @routes.post('/get') - async def get(request: web.Request): - try: - token_encrypted = await tdb.get(await request.read()) - except BadSignatureError: - raise web.HTTPUnauthorized - except json.JSONDecodeError: - raise web.HTTPBadRequest - except KeyError: - raise web.HTTPNotFound - else: - return web.Response(body=token_encrypted) + @routes.post('/reg') + async def reg(request: web.Request): + try: + await self.tdb.reg(await request.read()) + except BadSignatureError: + raise web.HTTPUnauthorized + except json.JSONDecodeError: + raise web.HTTPBadRequest + else: + raise web.HTTPOk - -def app_routes(tdb: TDB) -> web.RouteTableDef: - routes = web.RouteTableDef() - define_routes(routes, tdb) - return routes - - -def app_with_routes(routes: web.RouteTableDef): - app = web.Application() - app.add_routes(routes) - return app - - -def get_app(tdb: TDB) -> web.Application: - return app_with_routes(app_routes(tdb)) + @routes.post('/get') + async def get(request: web.Request): + try: + token_encrypted = await self.tdb.get(await request.read()) + except BadSignatureError: + raise web.HTTPUnauthorized + except json.JSONDecodeError: + raise web.HTTPBadRequest + except KeyError: + raise web.HTTPNotFound + else: + return web.Response(body=token_encrypted) diff --git a/v6d1tokens/run-server.py b/v6d1tokens/run-server.py index 47da594..acd3874 100644 --- a/v6d1tokens/run-server.py +++ b/v6d1tokens/run-server.py @@ -2,15 +2,14 @@ import asyncio from v6d0auth.run_app import run_app -from v6d1tokens.app import get_app +from v6d1tokens.app import V6D1TokensAppFactory from v6d1tokens.tdb import TDB async def main(): tdb = TDB() - app = get_app(tdb) async with tdb.db: - await run_app(app) + await run_app(V6D1TokensAppFactory(tdb).app()) if __name__ == '__main__':