mirror of
https://github.com/home-assistant/core.git
synced 2025-11-14 21:40:16 +00:00
42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
"""The prowl component."""
|
|
|
|
import logging
|
|
|
|
import prowlpy
|
|
|
|
from homeassistant.config_entries import ConfigEntry
|
|
from homeassistant.const import CONF_API_KEY
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.exceptions import ConfigEntryError, ConfigEntryNotReady
|
|
from homeassistant.helpers import config_validation as cv
|
|
|
|
from .const import DOMAIN, PLATFORMS
|
|
from .helpers import async_verify_key
|
|
|
|
_LOGGER = logging.getLogger(__name__)
|
|
|
|
CONFIG_SCHEMA = cv.platform_only_config_schema(DOMAIN)
|
|
|
|
|
|
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|
"""Set up a Prowl service."""
|
|
try:
|
|
if not await async_verify_key(hass, entry.data[CONF_API_KEY]):
|
|
raise ConfigEntryError(
|
|
"Unable to validate Prowl API key (Key invalid or expired)"
|
|
)
|
|
except TimeoutError as ex:
|
|
raise ConfigEntryNotReady("API call to Prowl failed") from ex
|
|
except prowlpy.APIError as ex:
|
|
if str(ex).startswith("Not accepted: exceeded rate limit"):
|
|
raise ConfigEntryNotReady("Prowl API rate limit exceeded") from ex
|
|
raise ConfigEntryError("Failed to validate Prowl API key ({ex})") from ex
|
|
|
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
|
return True
|
|
|
|
|
|
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|
"""Unload a config entry."""
|
|
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
|