mirror of
https://github.com/mx42/home-assistant-ecocito.git
synced 2026-01-14 13:59:50 +01:00
chore: add some constants for exception messages to satisfy the linter
This commit is contained in:
@@ -14,6 +14,9 @@ from .const import (
|
|||||||
ECOCITO_COLLECTION_ENDPOINT,
|
ECOCITO_COLLECTION_ENDPOINT,
|
||||||
ECOCITO_COLLECTION_TYPE_ENDPOINT,
|
ECOCITO_COLLECTION_TYPE_ENDPOINT,
|
||||||
ECOCITO_DEFAULT_COLLECTION_TYPE,
|
ECOCITO_DEFAULT_COLLECTION_TYPE,
|
||||||
|
ECOCITO_ERROR_AUTHENTICATION,
|
||||||
|
ECOCITO_ERROR_FETCHING,
|
||||||
|
ECOCITO_ERROR_UNHANDLED,
|
||||||
ECOCITO_GARBAGE_COLLECTION_TYPE,
|
ECOCITO_GARBAGE_COLLECTION_TYPE,
|
||||||
ECOCITO_LOGIN_ENDPOINT,
|
ECOCITO_LOGIN_ENDPOINT,
|
||||||
ECOCITO_LOGIN_PASSWORD_KEY,
|
ECOCITO_LOGIN_PASSWORD_KEY,
|
||||||
@@ -78,7 +81,7 @@ class EcocitoClient:
|
|||||||
raise InvalidAuthenticationError(error[0].find("li").text)
|
raise InvalidAuthenticationError(error[0].find("li").text)
|
||||||
LOGGER.debug("Connected as %s", self._username)
|
LOGGER.debug("Connected as %s", self._username)
|
||||||
except aiohttp.ClientError as e:
|
except aiohttp.ClientError as e:
|
||||||
raise EcocitoError(f"Authentication error: {e}") from e
|
raise EcocitoError(ECOCITO_ERROR_AUTHENTICATION.format(exc=e)) from e
|
||||||
|
|
||||||
async def get_collection_types(self) -> dict:
|
async def get_collection_types(self) -> dict:
|
||||||
"""Return the mapping of collection type ID with their label."""
|
"""Return the mapping of collection type ID with their label."""
|
||||||
@@ -100,7 +103,9 @@ class EcocitoClient:
|
|||||||
except Exception as e: # noqa: BLE001
|
except Exception as e: # noqa: BLE001
|
||||||
await self._handle_error(content, e)
|
await self._handle_error(content, e)
|
||||||
except aiohttp.ClientError as e:
|
except aiohttp.ClientError as e:
|
||||||
raise EcocitoError(f"Unable to get collection types: {e}") from e
|
raise EcocitoError(
|
||||||
|
ECOCITO_ERROR_FETCHING.format(exc=e, type="collection types")
|
||||||
|
) from e
|
||||||
|
|
||||||
async def get_collection_events(
|
async def get_collection_events(
|
||||||
self, event_type: str, year: int
|
self, event_type: str, year: int
|
||||||
@@ -138,7 +143,9 @@ class EcocitoClient:
|
|||||||
await self._handle_error(content, e)
|
await self._handle_error(content, e)
|
||||||
|
|
||||||
except aiohttp.ClientError as e:
|
except aiohttp.ClientError as e:
|
||||||
raise EcocitoError(f"Unable to get collection events: {e}") from e
|
raise EcocitoError(
|
||||||
|
ECOCITO_ERROR_FETCHING.format(exc=e, type="collection events")
|
||||||
|
) from e
|
||||||
|
|
||||||
async def get_garbage_collections(self, year: int) -> list[CollectionEvent]:
|
async def get_garbage_collections(self, year: int) -> list[CollectionEvent]:
|
||||||
"""Return the list of the garbage collections for a year."""
|
"""Return the list of the garbage collections for a year."""
|
||||||
@@ -179,10 +186,12 @@ class EcocitoClient:
|
|||||||
await self._handle_error(content, e)
|
await self._handle_error(content, e)
|
||||||
|
|
||||||
except aiohttp.ClientError as e:
|
except aiohttp.ClientError as e:
|
||||||
raise EcocitoError(f"Unable to get waste deposit visits: {e}") from e
|
raise EcocitoError(
|
||||||
|
ECOCITO_ERROR_FETCHING.format(exc=e, type="waste deposit events")
|
||||||
|
) from e
|
||||||
|
|
||||||
async def _handle_error(self, content: str, e: Exception):
|
async def _handle_error(self, content: str, e: Exception) -> None:
|
||||||
"""Handle a request error by checking for login form and re-authenticating if necessary."""
|
"""Handle request errors by checking for login form and re-auth if necessary."""
|
||||||
html = bs(content, "html.parser")
|
html = bs(content, "html.parser")
|
||||||
form = html.find("form", action=re.compile(f"{ECOCITO_LOGIN_URI}"))
|
form = html.find("form", action=re.compile(f"{ECOCITO_LOGIN_URI}"))
|
||||||
|
|
||||||
@@ -190,4 +199,4 @@ class EcocitoClient:
|
|||||||
LOGGER.debug("The session has expired, try to login again.")
|
LOGGER.debug("The session has expired, try to login again.")
|
||||||
await self.authenticate()
|
await self.authenticate()
|
||||||
else:
|
else:
|
||||||
raise EcocitoError("Unhandled request error") from e
|
raise EcocitoError(ECOCITO_ERROR_UNHANDLED) from e
|
||||||
|
|||||||
@@ -8,18 +8,15 @@ LOGGER = logging.getLogger(__package__)
|
|||||||
# Config Flow
|
# Config Flow
|
||||||
|
|
||||||
# Service Device
|
# Service Device
|
||||||
|
|
||||||
DEVICE_ATTRIBUTION = "Données fournies par Ecocito"
|
DEVICE_ATTRIBUTION = "Données fournies par Ecocito"
|
||||||
DEVICE_NAME = "Ecocito"
|
DEVICE_NAME = "Ecocito"
|
||||||
DEVICE_MANUFACTURER = "Ecocito"
|
DEVICE_MANUFACTURER = "Ecocito"
|
||||||
DEVICE_MODEL = "Calendrier Ecocito"
|
DEVICE_MODEL = "Calendrier Ecocito"
|
||||||
|
|
||||||
# Ecocito - Base
|
# Ecocito - Base
|
||||||
|
|
||||||
ECOCITO_DOMAIN = "{}.ecocito.com"
|
ECOCITO_DOMAIN = "{}.ecocito.com"
|
||||||
|
|
||||||
# Ecocito - Login
|
# Ecocito - Login
|
||||||
|
|
||||||
ECOCITO_LOGIN_URI = "/Usager/Profil/Connexion"
|
ECOCITO_LOGIN_URI = "/Usager/Profil/Connexion"
|
||||||
ECOCITO_LOGIN_ENDPOINT = f"https://{ECOCITO_DOMAIN}{ECOCITO_LOGIN_URI}"
|
ECOCITO_LOGIN_ENDPOINT = f"https://{ECOCITO_DOMAIN}{ECOCITO_LOGIN_URI}"
|
||||||
ECOCITO_LOGIN_USERNAME_KEY = "Identifiant"
|
ECOCITO_LOGIN_USERNAME_KEY = "Identifiant"
|
||||||
@@ -36,3 +33,12 @@ ECOCITO_COLLECTION_TYPE_ENDPOINT = f"https://{ECOCITO_DOMAIN}/Usager/Collecte"
|
|||||||
|
|
||||||
# Ecocito - Waste deposit visits
|
# Ecocito - Waste deposit visits
|
||||||
ECOCITO_WASTE_DEPOSIT_ENDPOINT = f"https://{ECOCITO_DOMAIN}/Usager/Apport/GetApport"
|
ECOCITO_WASTE_DEPOSIT_ENDPOINT = f"https://{ECOCITO_DOMAIN}/Usager/Apport/GetApport"
|
||||||
|
|
||||||
|
# Ecocito - Errors
|
||||||
|
ECOCITO_ERROR_AUTHENTICATION = "Authentication error: {exc}"
|
||||||
|
ECOCITO_ERROR_FETCHING = "Unable to get {type}: {exc}"
|
||||||
|
ECOCITO_ERROR_UNHANDLED = "Unhandled request error"
|
||||||
|
|
||||||
|
ECOCITO_MESSAGE_REAUTHENTICATE = (
|
||||||
|
"Credentials are no longer valid. Please reauthenticate"
|
||||||
|
)
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ from homeassistant.exceptions import ConfigEntryAuthFailed
|
|||||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
||||||
|
|
||||||
from .client import CollectionEvent, EcocitoClient, WasteDepotVisit
|
from .client import CollectionEvent, EcocitoClient, WasteDepotVisit
|
||||||
from .const import DOMAIN, LOGGER
|
from .const import DOMAIN, ECOCITO_MESSAGE_REAUTHENTICATE, LOGGER
|
||||||
from .errors import CannotConnectError, InvalidAuthenticationError
|
from .errors import CannotConnectError, InvalidAuthenticationError
|
||||||
|
|
||||||
T = TypeVar("T", bound=list[CollectionEvent] | list[WasteDepotVisit])
|
T = TypeVar("T", bound=list[CollectionEvent] | list[WasteDepotVisit])
|
||||||
@@ -46,9 +46,7 @@ class EcocitoDataUpdateCoordinator(DataUpdateCoordinator[T], Generic[T], ABC):
|
|||||||
except CannotConnectError as ex:
|
except CannotConnectError as ex:
|
||||||
raise UpdateFailed(ex) from ex
|
raise UpdateFailed(ex) from ex
|
||||||
except InvalidAuthenticationError as ex:
|
except InvalidAuthenticationError as ex:
|
||||||
raise ConfigEntryAuthFailed(
|
raise ConfigEntryAuthFailed(ECOCITO_MESSAGE_REAUTHENTICATE) from ex
|
||||||
"Credentials are no longer valid. Please reauthenticate"
|
|
||||||
) from ex
|
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
async def _fetch_data(self) -> T:
|
async def _fetch_data(self) -> T:
|
||||||
|
|||||||
Reference in New Issue
Block a user