Restore legacy poo inbound dispatch
This commit is contained in:
@@ -4,11 +4,14 @@ import json
|
||||
from datetime import UTC, datetime, time, timedelta
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.config import Settings
|
||||
from app.integrations.homeassistant import HomeAssistantClient
|
||||
from app.integrations.ticktick import TICKTICK_DATETIME_FORMAT, TickTickClient, TickTickTask
|
||||
from app.schemas.homeassistant import HomeAssistantPublishEnvelope
|
||||
from app.schemas.location import LocationRecordRequest
|
||||
from app.schemas.ticktick import TickTickActionTaskRequest
|
||||
from app.services.location import record_location
|
||||
from app.services.poo import publish_latest_poo_status
|
||||
|
||||
|
||||
class UnsupportedHomeAssistantMessage(RuntimeError):
|
||||
@@ -19,11 +22,23 @@ def handle_homeassistant_message(
|
||||
session: Session,
|
||||
envelope: HomeAssistantPublishEnvelope,
|
||||
ticktick_client: TickTickClient | None = None,
|
||||
poo_session: Session | None = None,
|
||||
settings: Settings | None = None,
|
||||
homeassistant_client: HomeAssistantClient | None = None,
|
||||
) -> None:
|
||||
if envelope.target == "location_recorder":
|
||||
_handle_location_message(session, envelope)
|
||||
return
|
||||
|
||||
if envelope.target == "poo_recorder":
|
||||
_handle_poo_message(
|
||||
envelope,
|
||||
poo_session=poo_session,
|
||||
settings=settings,
|
||||
homeassistant_client=homeassistant_client,
|
||||
)
|
||||
return
|
||||
|
||||
if envelope.target == "ticktick":
|
||||
_handle_ticktick_message(envelope, ticktick_client)
|
||||
return
|
||||
@@ -44,6 +59,28 @@ def _handle_location_message(session: Session, envelope: HomeAssistantPublishEnv
|
||||
record_location(session, payload)
|
||||
|
||||
|
||||
def _handle_poo_message(
|
||||
envelope: HomeAssistantPublishEnvelope,
|
||||
*,
|
||||
poo_session: Session | None,
|
||||
settings: Settings | None,
|
||||
homeassistant_client: HomeAssistantClient | None,
|
||||
) -> None:
|
||||
if envelope.action != "get_latest":
|
||||
raise UnsupportedHomeAssistantMessage(
|
||||
f"Unsupported Home Assistant target/action: {envelope.target}/{envelope.action}"
|
||||
)
|
||||
|
||||
if poo_session is None or settings is None or homeassistant_client is None:
|
||||
raise RuntimeError("Poo recorder integration is unavailable")
|
||||
|
||||
publish_latest_poo_status(
|
||||
session=poo_session,
|
||||
settings=settings,
|
||||
homeassistant_client=homeassistant_client,
|
||||
)
|
||||
|
||||
|
||||
def _handle_ticktick_message(
|
||||
envelope: HomeAssistantPublishEnvelope,
|
||||
ticktick_client: TickTickClient | None,
|
||||
|
||||
Reference in New Issue
Block a user