From 0bd8c1a85d8ae47503115745d5000ec8eca5a1c8 Mon Sep 17 00:00:00 2001 From: Chris Browet Date: Thu, 29 Jul 2021 13:38:13 +0200 Subject: [PATCH] FIX: error handling --- custom_components/jellyfin/__init__.py | 7 +++++-- custom_components/jellyfin/media_source.py | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/custom_components/jellyfin/__init__.py b/custom_components/jellyfin/__init__.py index 3183299..ef6b3bc 100644 --- a/custom_components/jellyfin/__init__.py +++ b/custom_components/jellyfin/__init__.py @@ -165,7 +165,7 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry): hass.data[DOMAIN][config.get(CONF_URL)]["manager"] = _jelly except: _LOGGER.error("Cannot connect to Jellyfin server.") - raise + raise ConfigEntryNotReady async def async_service_handler(service): """Map services to methods""" @@ -615,7 +615,10 @@ class JellyfinClientManager(object): self.server_url = "".join(filter(bool, (protocol, host, port, path))) self.jf_client = self.client_factory(self.config_entry) - self.jf_client.auth.connect_to_address(self.server_url) + status = self.jf_client.auth.connect_to_address(self.server_url) + if (status["State"] == 0): # Unavailable + return False + result = self.jf_client.auth.login(self.server_url, self.config_entry[CONF_USERNAME], self.config_entry[CONF_PASSWORD]) if "AccessToken" not in result: return False diff --git a/custom_components/jellyfin/media_source.py b/custom_components/jellyfin/media_source.py index 1f612f7..0207eac 100644 --- a/custom_components/jellyfin/media_source.py +++ b/custom_components/jellyfin/media_source.py @@ -82,9 +82,9 @@ class UnknownMediaType(BrowseError): """Unknown media type.""" async def async_get_media_source(hass: HomeAssistant): - """Set up Netatmo media source.""" + """Set up Jellyfin media source.""" entry = hass.config_entries.async_entries(DOMAIN)[0] - jelly_cm: JellyfinClientManager = hass.data[DOMAIN][entry.data[CONF_URL]]["manager"] + jelly_cm: JellyfinClientManager = hass.data[DOMAIN][entry.data[CONF_URL]]["manager"] if "manager" in hass.data[DOMAIN][entry.data[CONF_URL]] else None return JellyfinSource(hass, jelly_cm) class JellyfinSource(MediaSource):