Merge pull request #667 from talvasconcelos/fix/error_response

Fix HTML response to non browser request
This commit is contained in:
Arc 2022-06-15 15:49:52 +01:00 committed by GitHub
commit 02e0efe722
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -3,11 +3,13 @@ import importlib
import sys import sys
import traceback import traceback
import warnings import warnings
from http import HTTPStatus
from fastapi import FastAPI, Request from fastapi import FastAPI, Request
from fastapi.exceptions import RequestValidationError from fastapi.exceptions import RequestValidationError
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from fastapi.middleware.gzip import GZipMiddleware from fastapi.middleware.gzip import GZipMiddleware
from fastapi.responses import JSONResponse
from fastapi.staticfiles import StaticFiles from fastapi.staticfiles import StaticFiles
import lnbits.settings import lnbits.settings
@ -58,15 +60,19 @@ def create_app(config_object="lnbits.settings") -> FastAPI:
async def validation_exception_handler( async def validation_exception_handler(
request: Request, exc: RequestValidationError request: Request, exc: RequestValidationError
): ):
return template_renderer().TemplateResponse( # Only the browser sends "text/html" request
"error.html", # not fail proof, but everything else get's a JSON response
{"request": request, "err": f"`{exc.errors()}` is not a valid UUID."},
)
# return HTMLResponse( if "text/html" in request.headers["accept"]:
# status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, return template_renderer().TemplateResponse(
# content=jsonable_encoder({"detail": exc.errors(), "body": exc.body}), "error.html",
# ) {"request": request, "err": f"{exc.errors()} is not a valid UUID."},
)
return JSONResponse(
status_code=HTTPStatus.NO_CONTENT,
content={"detail": exc.errors()},
)
app.add_middleware(GZipMiddleware, minimum_size=1000) app.add_middleware(GZipMiddleware, minimum_size=1000)
# app.add_middleware(ASGIProxyFix) # app.add_middleware(ASGIProxyFix)