Home Assistant Unofficial Reference 2024.12.1
helpers.py
Go to the documentation of this file.
1 """Helpers for Google Time Travel integration."""
2 
3 import logging
4 
5 from googlemaps import Client
6 from googlemaps.distance_matrix import distance_matrix
7 from googlemaps.exceptions import ApiError, Timeout, TransportError
8 
9 from homeassistant.core import HomeAssistant
10 from homeassistant.helpers.location import find_coordinates
11 
12 _LOGGER = logging.getLogger(__name__)
13 
14 
16  hass: HomeAssistant, api_key: str, origin: str, destination: str
17 ) -> None:
18  """Return whether the config entry data is valid."""
19  resolved_origin = find_coordinates(hass, origin)
20  resolved_destination = find_coordinates(hass, destination)
21  try:
22  client = Client(api_key, timeout=10)
23  except ValueError as value_error:
24  _LOGGER.error("Malformed API key")
25  raise InvalidApiKeyException from value_error
26  try:
27  distance_matrix(client, resolved_origin, resolved_destination, mode="driving")
28  except ApiError as api_error:
29  if api_error.status == "REQUEST_DENIED":
30  _LOGGER.error("Request denied: %s", api_error.message)
31  raise InvalidApiKeyException from api_error
32  _LOGGER.error("Unknown error: %s", api_error.message)
33  raise UnknownException from api_error
34  except TransportError as transport_error:
35  _LOGGER.error("Unknown error: %s", transport_error)
36  raise UnknownException from transport_error
37  except Timeout as timeout_error:
38  _LOGGER.error("Timeout error")
39  raise TimeoutError from timeout_error
40 
41 
42 class InvalidApiKeyException(Exception):
43  """Invalid API Key Error."""
44 
45 
46 class UnknownException(Exception):
47  """Unknown API Error."""
None validate_config_entry(HomeAssistant hass, str api_key, str origin, str destination)
Definition: helpers.py:17
str|None find_coordinates(HomeAssistant hass, str name, list|None recursion_history=None)
Definition: location.py:51