Add unfinished website section
This commit is contained in:
@@ -43,6 +43,17 @@ async def auth_middleware(request, handler):
|
||||
request["system"] = system
|
||||
return await handler(request)
|
||||
|
||||
@web.middleware
|
||||
async def cors_middleware(request, handler):
|
||||
try:
|
||||
resp = await handler(request)
|
||||
except web.HTTPException as r:
|
||||
resp = r
|
||||
resp.headers["Access-Control-Allow-Origin"] = "*"
|
||||
resp.headers["Access-Control-Allow-Methods"] = "GET, POST, PATCH"
|
||||
resp.headers["Access-Control-Allow-Headers"] = "X-Token"
|
||||
return resp
|
||||
|
||||
class Handlers:
|
||||
@require_system
|
||||
async def get_system(request):
|
||||
@@ -52,14 +63,14 @@ class Handlers:
|
||||
system_id = request.match_info.get("system")
|
||||
system = await System.get_by_hid(request["conn"], system_id)
|
||||
if not system:
|
||||
raise web.HTTPNotFound()
|
||||
raise web.HTTPNotFound(body="null")
|
||||
return web.json_response(system.to_json())
|
||||
|
||||
async def get_system_members(request):
|
||||
system_id = request.match_info.get("system")
|
||||
system = await System.get_by_hid(request["conn"], system_id)
|
||||
if not system:
|
||||
raise web.HTTPNotFound()
|
||||
raise web.HTTPNotFound(body="null")
|
||||
|
||||
members = await system.get_members(request["conn"])
|
||||
return web.json_response([m.to_json() for m in members])
|
||||
@@ -68,7 +79,7 @@ class Handlers:
|
||||
system_id = request.match_info.get("system")
|
||||
system = await System.get_by_hid(request["conn"], system_id)
|
||||
if not system:
|
||||
raise web.HTTPNotFound()
|
||||
raise web.HTTPNotFound(body="null")
|
||||
|
||||
switches = await system.get_switches(request["conn"], 9999)
|
||||
|
||||
@@ -85,17 +96,17 @@ class Handlers:
|
||||
system = await System.get_by_hid(request["conn"], system_id)
|
||||
|
||||
if not system:
|
||||
raise web.HTTPNotFound()
|
||||
raise web.HTTPNotFound(body="null")
|
||||
|
||||
members, stamp = await utils.get_fronters(request["conn"], system.id)
|
||||
if not stamp:
|
||||
# No switch has been registered at all
|
||||
raise web.HTTPNotFound()
|
||||
raise web.HTTPNotFound(body="null")
|
||||
|
||||
data = {
|
||||
"timestamp": stamp.isoformat(),
|
||||
"members": [member.to_json() for member in members]
|
||||
}
|
||||
}
|
||||
return web.json_response(data)
|
||||
|
||||
@require_system
|
||||
@@ -117,8 +128,11 @@ class Handlers:
|
||||
member_id = request.match_info.get("member")
|
||||
member = await Member.get_member_by_hid(request["conn"], None, member_id)
|
||||
if not member:
|
||||
raise web.HTTPNotFound()
|
||||
return web.json_response(member.to_json())
|
||||
raise web.HTTPNotFound(body="{}")
|
||||
system = await System.get_by_id(request["conn"], member.system)
|
||||
member_json = member.to_json()
|
||||
member_json["system"] = system.to_json()
|
||||
return web.json_response(member_json)
|
||||
|
||||
@require_system
|
||||
async def post_member(request):
|
||||
@@ -213,8 +227,9 @@ class Handlers:
|
||||
return web.Response(text=await system.get_token(request["conn"]))
|
||||
|
||||
async def run():
|
||||
app = web.Application(middlewares=[db_middleware, auth_middleware, error_middleware])
|
||||
|
||||
app = web.Application(middlewares=[cors_middleware, db_middleware, auth_middleware, error_middleware])
|
||||
def cors_fallback(req):
|
||||
return web.Response(headers={"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "x-token", "Access-Control-Allow-Methods": "GET, POST, PATCH"}, status=404 if req.method != "OPTIONS" else 200)
|
||||
app.add_routes([
|
||||
web.get("/s", Handlers.get_system),
|
||||
web.post("/s/switches", Handlers.post_switch),
|
||||
@@ -227,7 +242,8 @@ async def run():
|
||||
web.post("/m", Handlers.post_member),
|
||||
web.patch("/m/{member}", Handlers.patch_member),
|
||||
web.delete("/m/{member}", Handlers.delete_member),
|
||||
web.post("/discord_oauth", Handlers.discord_oauth)
|
||||
web.post("/discord_oauth", Handlers.discord_oauth),
|
||||
web.route("*", "/{tail:.*}", cors_fallback)
|
||||
])
|
||||
app["pool"] = await db.connect(
|
||||
os.environ["DATABASE_URI"]
|
||||
|
Reference in New Issue
Block a user