1 """The Twitch component."""
3 from __future__
import annotations
5 from typing
import cast
7 from aiohttp.client_exceptions
import ClientError, ClientResponseError
8 from twitchAPI.twitch
import Twitch
15 LocalOAuth2Implementation,
17 async_get_config_entry_implementation,
20 from .const
import DOMAIN, OAUTH_SCOPES, PLATFORMS
21 from .coordinator
import TwitchCoordinator
25 """Set up Twitch from a config entry."""
26 implementation = cast(
27 LocalOAuth2Implementation,
32 await session.async_ensure_token_valid()
33 except ClientResponseError
as err:
34 if 400 <= err.status < 500:
36 "OAuth session is not valid, reauth required"
38 raise ConfigEntryNotReady
from err
39 except ClientError
as err:
40 raise ConfigEntryNotReady
from err
42 access_token = entry.data[CONF_TOKEN][CONF_ACCESS_TOKEN]
44 app_id=implementation.client_id,
45 authenticate_app=
False,
47 client.auto_refresh_auth =
False
48 await client.set_user_authentication(access_token, scope=OAUTH_SCOPES)
52 await coordinator.async_config_entry_first_refresh()
54 hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator
56 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
62 """Unload Twitch config entry."""
64 return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
AbstractOAuth2Implementation async_get_config_entry_implementation(HomeAssistant hass, config_entries.ConfigEntry config_entry)