Merge otto/ha-client-errors into main

This commit is contained in:
2026-06-10 23:29:30 +02:00
22 changed files with 331 additions and 93 deletions

1
app/api/__init__.py Normal file
View File

@@ -0,0 +1 @@
"""API package."""

1
app/api/v1/__init__.py Normal file
View File

@@ -0,0 +1 @@
"""Version 1 API package."""

View File

@@ -2,7 +2,7 @@ from __future__ import annotations
from typing import List
from fastapi import APIRouter, Request
from fastapi import APIRouter, HTTPException, Request
from app.ha.models import HaEntitySummary
from app.ha.reader import HaReader
@@ -11,6 +11,20 @@ from app.rules.recommender import Recommender
router = APIRouter(prefix="/v1", tags=["entities"])
def _state_ha_reader(request: Request) -> HaReader:
try:
return request.app.state.ha_reader
except AttributeError as exc:
raise HTTPException(status_code=503, detail="HA-Reader nicht initialisiert.") from exc
def _state_recommender(request: Request) -> Recommender:
try:
return request.app.state.recommender
except AttributeError as exc:
raise HTTPException(status_code=503, detail="Recommender nicht initialisiert.") from exc
@router.get(
"/entities",
summary="Home-Assistant-Entities auflisten",
@@ -18,8 +32,8 @@ router = APIRouter(prefix="/v1", tags=["entities"])
response_model=List[HaEntitySummary],
)
def list_entities(request: Request) -> List[HaEntitySummary]:
ha_reader: HaReader = request.app.state.ha_reader
recommender: Recommender = request.app.state.recommender
ha_reader = _state_ha_reader(request)
recommender = _state_recommender(request)
entities = ha_reader.read_entities()
recommender.run(entities)
return entities