20 lines
748 B
Python
20 lines
748 B
Python
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from fastapi import FastAPI, Request
|
|
|
|
from app.ha.exceptions import HaAuthError, HaClientError, HaHttpError
|
|
|
|
|
|
def register_exception_handlers(app: FastAPI) -> None:
|
|
@app.exception_handler(HaClientError)
|
|
async def handle_ha_client_error(request: Request, exc: HaClientError) -> Any: # pragma: no cover - einfacher Wrapper
|
|
if isinstance(exc, HaAuthError):
|
|
return {"detail": "Ungültige Authentifizierung gegenüber Home Assistant."}
|
|
if isinstance(exc, HaHttpError):
|
|
return {
|
|
"detail": "Home Assistant meldet einen Fehler.",
|
|
"upstream_status": exc.status_code,
|
|
}
|
|
return {"detail": str(exc)} |