mirror of https://github.com/home-assistant/core
36 lines
1.0 KiB
Python
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
|