"""Provide info to system health.""" from hass_nabucasa import Cloud from yarl import URL from homeassistant.components import system_health from homeassistant.core import HomeAssistant, callback from .client import CloudClient from .const import DOMAIN @callback def async_register( hass: HomeAssistant, register: system_health.SystemHealthRegistration ) -> None: """Register system health callbacks.""" register.async_register_info(system_health_info, "/config/cloud") async def system_health_info(hass): """Get info for the info page.""" cloud: Cloud = hass.data[DOMAIN] client: CloudClient = cloud.client data = { "logged_in": cloud.is_logged_in, } if cloud.is_logged_in: data["subscription_expiration"] = cloud.expiration_date data["relayer_connected"] = cloud.is_connected data["remote_enabled"] = client.prefs.remote_enabled data["remote_connected"] = cloud.remote.is_connected data["alexa_enabled"] = client.prefs.alexa_enabled data["google_enabled"] = client.prefs.google_enabled data["can_reach_cert_server"] = system_health.async_check_can_reach_url( hass, cloud.acme_directory_server ) data["can_reach_cloud_auth"] = system_health.async_check_can_reach_url( hass, f"https://cognito-idp.{cloud.region}.amazonaws.com/{cloud.user_pool_id}/.well-known/jwks.json", ) data["can_reach_cloud"] = system_health.async_check_can_reach_url( hass, URL(cloud.relayer).with_scheme("https").with_path("/status") ) return data