1 """The xbox integration."""
3 from __future__
import annotations
7 from xbox.webapi.api.client
import XboxLiveClient
8 from xbox.webapi.api.provider.smartglass.models
import SmartglassConsoleList
15 config_entry_oauth2_flow,
16 config_validation
as cv,
20 from .const
import DOMAIN
21 from .coordinator
import XboxUpdateCoordinator
23 _LOGGER = logging.getLogger(__name__)
25 CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN)
28 Platform.BINARY_SENSOR,
29 Platform.MEDIA_PLAYER,
36 """Set up xbox from a config entry."""
38 await config_entry_oauth2_flow.async_get_config_entry_implementation(
42 session = config_entry_oauth2_flow.OAuth2Session(hass, entry, implementation)
44 aiohttp_client.async_get_clientsession(hass), session
47 client = XboxLiveClient(auth)
48 consoles: SmartglassConsoleList = await client.smartglass.get_console_list()
50 "Found %d consoles: %s",
56 await coordinator.async_config_entry_first_refresh()
58 hass.data.setdefault(DOMAIN, {})[entry.entry_id] = {
59 "client": XboxLiveClient(auth),
61 "coordinator": coordinator,
64 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
70 """Unload a config entry."""
71 unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
74 hass.data[DOMAIN][entry.entry_id][
"sensor_unsub"]()
75 hass.data[DOMAIN][entry.entry_id][
"binary_sensor_unsub"]()
76 hass.data[DOMAIN].pop(entry.entry_id)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)