hass-core/homeassistant/components/mastodon/coordinator.py
Andrew Jackson aee5d5126f
Add sensor platform for Mastodon (#123434)
* Add account sensors

* Sensor icons

* Change sensors to use value_fn

* Add native unit of measurement

* Update native unit of measurement

* Change toots to posts

* Fix sensor icons

* Add device entry type

* Explain conditional naming

* Fixes from review

* Remove unnecessary constructor
2024-08-09 16:02:27 +02:00

35 lines
1 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