V6D1TokensAppFactory

This commit is contained in:
AF 2021-11-29 17:23:15 +03:00
parent 455dcdced7
commit 668eb581c4
2 changed files with 35 additions and 46 deletions

View File

@ -4,54 +4,44 @@ from aiohttp import web
from nacl.exceptions import BadSignatureError from nacl.exceptions import BadSignatureError
from v6d0auth import certs from v6d0auth import certs
__all__ = ('get_app',) __all__ = ('V6D1TokensAppFactory',)
from v6d0auth.appfactory import AppFactory
from v6d1tokens.tdb import TDB from v6d1tokens.tdb import TDB
def define_routes(routes: web.RouteTableDef, tdb: TDB): class V6D1TokensAppFactory(AppFactory):
print(certs.vkey.encode().hex()) def __init__(self, tdb: TDB):
self.tdb = tdb
@routes.get('/') def define_routes(self, routes: web.RouteTableDef):
async def home(_request: web.Request): print(certs.vkey.encode().hex())
return web.Response(body='v6d1tokens\n')
@routes.post('/reg') @routes.get('/')
async def reg(request: web.Request): async def home(_request: web.Request):
try: return web.Response(body='v6d1tokens\n')
await tdb.reg(await request.read())
except BadSignatureError:
raise web.HTTPUnauthorized
except json.JSONDecodeError:
raise web.HTTPBadRequest
else:
raise web.HTTPOk
@routes.post('/get') @routes.post('/reg')
async def get(request: web.Request): async def reg(request: web.Request):
try: try:
token_encrypted = await tdb.get(await request.read()) await self.tdb.reg(await request.read())
except BadSignatureError: except BadSignatureError:
raise web.HTTPUnauthorized raise web.HTTPUnauthorized
except json.JSONDecodeError: except json.JSONDecodeError:
raise web.HTTPBadRequest raise web.HTTPBadRequest
except KeyError: else:
raise web.HTTPNotFound raise web.HTTPOk
else:
return web.Response(body=token_encrypted)
@routes.post('/get')
def app_routes(tdb: TDB) -> web.RouteTableDef: async def get(request: web.Request):
routes = web.RouteTableDef() try:
define_routes(routes, tdb) token_encrypted = await self.tdb.get(await request.read())
return routes except BadSignatureError:
raise web.HTTPUnauthorized
except json.JSONDecodeError:
def app_with_routes(routes: web.RouteTableDef): raise web.HTTPBadRequest
app = web.Application() except KeyError:
app.add_routes(routes) raise web.HTTPNotFound
return app else:
return web.Response(body=token_encrypted)
def get_app(tdb: TDB) -> web.Application:
return app_with_routes(app_routes(tdb))

View File

@ -2,15 +2,14 @@ import asyncio
from v6d0auth.run_app import run_app from v6d0auth.run_app import run_app
from v6d1tokens.app import get_app from v6d1tokens.app import V6D1TokensAppFactory
from v6d1tokens.tdb import TDB from v6d1tokens.tdb import TDB
async def main(): async def main():
tdb = TDB() tdb = TDB()
app = get_app(tdb)
async with tdb.db: async with tdb.db:
await run_app(app) await run_app(V6D1TokensAppFactory(tdb).app())
if __name__ == '__main__': if __name__ == '__main__':