1 """NextDns coordinator."""
3 from datetime
import timedelta
5 from typing
import TypeVar
7 from aiohttp.client_exceptions
import ClientConnectorError
20 from nextdns.model
import NextDnsData
21 from tenacity
import RetryError
28 from .const
import DOMAIN
30 _LOGGER = logging.getLogger(__name__)
32 CoordinatorDataT = TypeVar(
"CoordinatorDataT", bound=NextDnsData)
36 """Class to manage fetching NextDNS data API."""
43 update_interval: timedelta,
48 self.
profile_nameprofile_name = nextdns.get_profile_name(profile_id)
50 configuration_url=f
"https://my.nextdns.io/{profile_id}/setup",
51 entry_type=DeviceEntryType.SERVICE,
52 identifiers={(DOMAIN,
str(profile_id))},
53 manufacturer=
"NextDNS Inc.",
57 super().
__init__(hass, _LOGGER, name=DOMAIN, update_interval=update_interval)
60 """Update data via internal method."""
69 except InvalidApiKeyError
as err:
70 raise ConfigEntryAuthFailed
from err
73 """Update data via library."""
74 raise NotImplementedError(
"Update method not implemented")
78 """Class to manage fetching NextDNS analytics status data from API."""
81 """Update data via library."""
86 """Class to manage fetching NextDNS analytics Dnssec data from API."""
89 """Update data via library."""
94 """Class to manage fetching NextDNS analytics encryption data from API."""
97 """Update data via library."""
98 return await self.
nextdnsnextdns.get_analytics_encryption(self.
profile_idprofile_id)
102 """Class to manage fetching NextDNS analytics IP versions data from API."""
105 """Update data via library."""
106 return await self.
nextdnsnextdns.get_analytics_ip_versions(self.
profile_idprofile_id)
110 """Class to manage fetching NextDNS analytics protocols data from API."""
113 """Update data via library."""
114 return await self.
nextdnsnextdns.get_analytics_protocols(self.
profile_idprofile_id)
118 """Class to manage fetching NextDNS connection data from API."""
121 """Update data via library."""
126 """Class to manage fetching NextDNS connection data from API."""
129 """Update data via library."""
ConnectionStatus _async_update_data_internal(self)
AnalyticsDnssec _async_update_data_internal(self)
AnalyticsEncryption _async_update_data_internal(self)
AnalyticsIpVersions _async_update_data_internal(self)
AnalyticsProtocols _async_update_data_internal(self)
Settings _async_update_data_internal(self)
AnalyticsStatus _async_update_data_internal(self)
None __init__(self, HomeAssistant hass, NextDns nextdns, str profile_id, timedelta update_interval)
CoordinatorDataT _async_update_data_internal(self)
CoordinatorDataT _async_update_data(self)