HTML error pages for FastAPI

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
This commit is contained in:
Frédéric Mangano-Tarumi 2020-07-28 16:33:27 +02:00 committed by Lukas Fleischer
parent 202ffd8923
commit 5fb4fc12de

View file

@ -1,4 +1,7 @@
from fastapi import FastAPI import http
from fastapi import FastAPI, HTTPException
from fastapi.responses import HTMLResponse
from starlette.middleware.sessions import SessionMiddleware from starlette.middleware.sessions import SessionMiddleware
import aurweb.config import aurweb.config
@ -14,3 +17,14 @@ if not session_secret:
app.add_middleware(SessionMiddleware, secret_key=session_secret) app.add_middleware(SessionMiddleware, secret_key=session_secret)
app.include_router(sso.router) app.include_router(sso.router)
@app.exception_handler(HTTPException)
async def http_exception_handler(request, exc):
"""
Dirty HTML error page to replace the default JSON error responses.
In the future this should use a proper Arch-themed HTML template.
"""
phrase = http.HTTPStatus(exc.status_code).phrase
return HTMLResponse(f"<h1>{exc.status_code} {phrase}</h1><p>{exc.detail}</p>",
status_code=exc.status_code)