async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up Uonet+ Vulcan integration.""" hass.data.setdefault(DOMAIN, {}) try: keystore = Keystore.load(entry.data["keystore"]) account = Account.load(entry.data["account"]) client = Vulcan(keystore, account, async_get_clientsession(hass)) await client.select_student() students = await client.get_students() for student in students: if str(student.pupil.id) == str(entry.data["student_id"]): client.student = student break except UnauthorizedCertificateException as err: raise ConfigEntryAuthFailed( "The certificate is not authorized.") from err except ClientConnectorError as err: raise ConfigEntryNotReady( f"Connection error - please check your internet connection: {err}" ) from err hass.data[DOMAIN][entry.entry_id] = client await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) return True
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up Uonet+ Vulcan integration.""" hass.data.setdefault(DOMAIN, {}) try: keystore = Keystore.load(entry.data["keystore"]) account = Account.load(entry.data["account"]) client = Vulcan(keystore, account) await client.select_student() students = await client.get_students() for student in students: if str(student.pupil.id) == str(entry.data["student_id"]): client.student = student break except VulcanAPIException as err: if str(err) == "The certificate is not authorized.": _LOGGER.error( "The certificate is not authorized, please authorize integration again" ) raise ConfigEntryAuthFailed from err _LOGGER.error("Vulcan API error: %s", err) return False except ClientConnectorError as err: if "connection_error" not in hass.data[DOMAIN]: _LOGGER.error( "Connection error - please check your internet connection: %s", err) hass.data[DOMAIN]["connection_error"] = True await client.close() raise ConfigEntryNotReady from err hass.data[DOMAIN]["students_number"] = len( hass.config_entries.async_entries(DOMAIN)) hass.data[DOMAIN][entry.entry_id] = client if not entry.update_listeners: entry.add_update_listener(_async_update_options) for platform in PLATFORMS: hass.async_create_task( hass.config_entries.async_forward_entry_setup(entry, platform)) return True