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 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)

View File

@ -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__':