Merge pull request #667 from talvasconcelos/fix/error_response
Fix HTML response to non browser request
This commit is contained in:
commit
02e0efe722
1 changed files with 14 additions and 8 deletions
|
|
@ -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
|
||||||
):
|
):
|
||||||
|
# Only the browser sends "text/html" request
|
||||||
|
# not fail proof, but everything else get's a JSON response
|
||||||
|
|
||||||
|
if "text/html" in request.headers["accept"]:
|
||||||
return template_renderer().TemplateResponse(
|
return template_renderer().TemplateResponse(
|
||||||
"error.html",
|
"error.html",
|
||||||
{"request": request, "err": f"`{exc.errors()}` is not a valid UUID."},
|
{"request": request, "err": f"{exc.errors()} is not a valid UUID."},
|
||||||
)
|
)
|
||||||
|
|
||||||
# return HTMLResponse(
|
return JSONResponse(
|
||||||
# status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
status_code=HTTPStatus.NO_CONTENT,
|
||||||
# content=jsonable_encoder({"detail": exc.errors(), "body": exc.body}),
|
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)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue