mirror of
https://github.com/home-assistant/core.git
synced 2026-09-13 12:10:22 +01:00
Co-authored-by: Prakash Prajapati <115608116+paxprz-tekkon@users.noreply.github.com>
55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
"""The Willow integration."""
|
|
|
|
from pywillow import WillowClient
|
|
|
|
from homeassistant.const import CONF_ACCESS_TOKEN, Platform
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.exceptions import ConfigEntryNotReady
|
|
from homeassistant.helpers import aiohttp_client, config_validation as cv
|
|
from homeassistant.helpers.config_entry_oauth2_flow import (
|
|
ImplementationUnavailableError,
|
|
OAuth2Session,
|
|
async_get_config_entry_implementation,
|
|
)
|
|
|
|
from .const import DOMAIN
|
|
from .coordinator import WillowConfigEntry, WillowDataUpdateCoordinator
|
|
|
|
_PLATFORMS: list[Platform] = [Platform.SENSOR]
|
|
CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN)
|
|
|
|
|
|
async def async_setup_entry(hass: HomeAssistant, entry: WillowConfigEntry) -> bool:
|
|
"""Set up Willow from a config entry."""
|
|
try:
|
|
implementation = await async_get_config_entry_implementation(hass, entry)
|
|
except ImplementationUnavailableError as err:
|
|
raise ConfigEntryNotReady(
|
|
"OAuth2 implementation temporarily unavailable, will retry"
|
|
) from err
|
|
|
|
session = OAuth2Session(hass, entry, implementation)
|
|
|
|
client = WillowClient(
|
|
aiohttp_client.async_get_clientsession(hass),
|
|
session.token[CONF_ACCESS_TOKEN],
|
|
)
|
|
coordinator = WillowDataUpdateCoordinator(
|
|
hass,
|
|
entry,
|
|
client,
|
|
session,
|
|
)
|
|
await coordinator.async_config_entry_first_refresh()
|
|
|
|
entry.runtime_data = coordinator
|
|
|
|
await hass.config_entries.async_forward_entry_setups(entry, _PLATFORMS)
|
|
|
|
return True
|
|
|
|
|
|
async def async_unload_entry(hass: HomeAssistant, entry: WillowConfigEntry) -> bool:
|
|
"""Unload a config entry."""
|
|
return await hass.config_entries.async_unload_platforms(entry, _PLATFORMS)
|