add safe home assistant error handling
This commit is contained in:
1
app/core/__init__.py
Normal file
1
app/core/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
"""Core application helpers."""
|
||||
23
app/core/exception_handlers.py
Normal file
23
app/core/exception_handlers.py
Normal file
@@ -0,0 +1,23 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from fastapi import FastAPI, Request, status
|
||||
from fastapi.responses import JSONResponse
|
||||
|
||||
from app.ha.exceptions import HaAuthError, HaClientError, HaHttpError, HaTimeoutError
|
||||
|
||||
|
||||
def register_exception_handlers(app: FastAPI) -> None:
|
||||
@app.exception_handler(HaClientError)
|
||||
async def handle_ha_client_error(_: Request, exc: HaClientError) -> JSONResponse:
|
||||
return JSONResponse(
|
||||
status_code=_status_code_for_ha_error(exc),
|
||||
content={"detail": exc.public_detail},
|
||||
)
|
||||
|
||||
|
||||
def _status_code_for_ha_error(exc: HaClientError) -> int:
|
||||
if isinstance(exc, HaTimeoutError):
|
||||
return status.HTTP_504_GATEWAY_TIMEOUT
|
||||
if isinstance(exc, (HaAuthError, HaHttpError)):
|
||||
return status.HTTP_502_BAD_GATEWAY
|
||||
return status.HTTP_502_BAD_GATEWAY
|
||||
Reference in New Issue
Block a user