core/homeassistant/components/mastodon/coordinator.py

36 lines
1.0 KiB
Python

"""Define an object to manage fetching Mastodon data."""
from __future__ import annotations
from datetime import timedelta
from typing import Any
from mastodon import Mastodon
from mastodon.Mastodon import MastodonError
from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import LOGGER
class MastodonCoordinator(DataUpdateCoordinator[dict[str, Any]]):
"""Class to manage fetching Mastodon data."""
def __init__(self, hass: HomeAssistant, client: Mastodon) -> None:
"""Initialize coordinator."""
super().__init__(
hass, logger=LOGGER, name="Mastodon", update_interval=timedelta(hours=1)
)
self.client = client
async def _async_update_data(self) -> dict[str, Any]:
try:
account: dict = await self.hass.async_add_executor_job(
self.client.account_verify_credentials
)
except MastodonError as ex:
raise UpdateFailed(ex) from ex
return account