diff --git a/main.py b/main.py index 15a258e..be85898 100644 --- a/main.py +++ b/main.py @@ -7,50 +7,14 @@ import json from model import Model routes = aiohttp.web.RouteTableDef() - routes.static('/static', 'static') -admintoken = "ae33fd8cc4fdcb1ff50ba42ff48046a7" - -CLIENT_REGEX = r'/{client:[a-zA-Z0-9]{16}}' - - -def get_client(request: aiohttp.web.Request): - client = request.match_info.get("client", None) - model = request.app['model'] - - if not client: - print('[get_client] client is not set, wtf') - raise aiohttp.web.HTTPBadRequest() - - if not model.exists_client(client): - #print(f'[get_client] model does not know {client=}') - raise aiohttp.web.HTTPBadRequest() - - return client - - -@routes.get(CLIENT_REGEX) -async def handler(request: aiohttp.web.Request): - # this handler prevents people missing trailing slashes - client = get_client(request) - raise aiohttp.web.HTTPFound(f"{client}/") - - -@routes.get(CLIENT_REGEX + '/') -async def handler(request: aiohttp.web.Request): - client = get_client(request) - #print(f"{client=} accessed") - return aiohttp.web.FileResponse('ui.html') - @routes.post('/api/token{authtoken}/{method}') async def handler(request: aiohttp.web.Request): method = request.match_info.get('method', None) token = request.match_info.get('authtoken', None) model = request.app['model'] - data = await request.json() - try: assert method in model.ApiMethod.dict value = await model.ApiMethod.dict[method](model, token, **data) @@ -59,22 +23,15 @@ async def handler(request: aiohttp.web.Request): else: return aiohttp.web.Response(status=200) except Exception as e: - del e # unused? traceback.print_exc() return aiohttp.web.Response(status=400) - #finally: - # await model.send_state(client) @routes.post('/api/{method}') async def handler(request: aiohttp.web.Request): - #client = get_client(request) method = request.match_info.get('method', None) model = request.app['model'] - data = await request.json() - - try: assert method in model.ApiMethod.dict value = await model.ApiMethod.dict[method](model, **data) @@ -83,17 +40,8 @@ async def handler(request: aiohttp.web.Request): else: return aiohttp.web.Response(status=200) except Exception as e: - del e # unused? traceback.print_exc() return aiohttp.web.Response(status=400) - #finally: - # await model.send_state(client) - -@routes.get(f"/api/{admintoken}") -async def handler(request: aiohttp.web.Request): - model = request.app['model'] - return aiohttp.web.json_response(model.model) - @routes.get('/dealer/{usertoken}') async def handler(request): @@ -105,28 +53,14 @@ async def handler(request): del request # unused return aiohttp.web.FileResponse('index.html') - -@routes.get('/register/{username:.+}') -async def handler(request): - model = request.app['model'] - username = request.match_info.get('username', 'Joe') - username = urllib.parse.unquote(username) - - client = model.create_client(username) - raise aiohttp.web.HTTPFound(f"/{client}/") - - if __name__ == '__main__': app = aiohttp.web.Application() app.add_routes(routes) - data = {} filename = "scoreboard.json" if os.path.isfile(filename): with open(filename) as f: data = json.load(f) - app['model'] = Model(model = data) - aiohttp.web.run_app(app, port=42042) app['model'].save() diff --git a/model.py b/model.py index 3171de8..b820227 100644 --- a/model.py +++ b/model.py @@ -77,7 +77,7 @@ class Model(object): @ApiMethod async def get_user(self, authtoken): user = self.verify_user(authtoken) - return {"user":user.name} + return user.to_json() @ApiMethod async def set_score(self, authtoken, newscore): diff --git a/user.html b/user.html index 33ee0c0..840e7da 100644 --- a/user.html +++ b/user.html @@ -23,6 +23,9 @@ display: flex; justify-content: space-around; } + input { + width: 8rem; + } @@ -36,26 +39,20 @@
Current Washing Coins: | +Sold Washing Coins | 42 | |
Maximally Available: | -69 | +Maximum Available | +69 |