Skip to content

Commit

Permalink
Fix error handling when no response is available
Browse files Browse the repository at this point in the history
  • Loading branch information
MelleD committed Sep 9, 2024
1 parent acd4bfb commit 8ae4563
Showing 1 changed file with 42 additions and 39 deletions.
81 changes: 42 additions & 39 deletions custom_components/radar_warnings/radar_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ def get_url(self):
def get_google_url(self, point: Point):
return f"https://maps.googleapis.com/maps/api/geocode/json?latlng={point.latitude},{point.longitude}&key={self.google_api_key}"

async def get_adress(self, point: Point, street: str | None) -> str :
async def get_adress(self, point: Point, street: str | None) -> tuple[str | None, str | None, str | None]:
if self.google_api_key is None:
return (None, None, street)

Expand Down Expand Up @@ -121,23 +121,26 @@ async def get_adress(self, point: Point, street: str | None) -> str :
)

data_adress = await response.json()
first_result = data_adress['results'][0]
formatted_address = first_result['formatted_address']
address_components = first_result['address_components']

address_parts = []
if street is not None:
address_parts.append(street)
for component in address_components:
if 'locality' in component['types']:
address_parts.append(component['long_name'])

if 'route' in component['types'] and street is None:
street = component['long_name']
if 'results' in data_adress and len(data_adress['results']) > 0:
first_result = data_adress['results'][0]
formatted_address = first_result['formatted_address']
address_components = first_result['address_components']

address_parts = []
if street is not None:
address_parts.append(street)
for component in address_components:
if 'locality' in component['types']:
address_parts.append(component['long_name'])

if 'route' in component['types'] and street is None:
street = component['long_name']
address_parts.append(street)

adress_short = ', '.join(address_parts)
return (formatted_address,adress_short,street)

adress_short = ', '.join(address_parts)
return (formatted_address,adress_short,street)
return (street, street, street)

async def get_pois(self):
url = self.get_url()
Expand Down Expand Up @@ -166,29 +169,29 @@ async def get_pois(self):
data_pois = await response.json()
pois = list()

# Durch die pois iterieren und das info-Feld als Dictionary parsen
for poi in data_pois['pois']:
poi['info'] = json.loads(poi['info'])

# Datenstruktur ausgeben
for poi_data in data_pois['pois']:
start_point = Point(self.latitude, self.longitude)
end_point = Point(poi_data['lat'], poi_data['lng'])
distance = geodesic(start_point, end_point).kilometers
poi_street = poi_data.get('street', None)
adress, adress_short, street = await self.get_adress(end_point, poi_street)
if distance <= self.radius_km:
poi = POI(
id=poi_data['id'],
latitude=poi_data['lat'],
longitude=poi_data['lng'],
street=street,
vmax=poi_data['vmax'],
distance=distance,
adress=adress,
adress_short = adress_short
).to_json()
pois.append(poi)
if 'pois' in data_pois and len(data_pois['pois']) > 0:
for poi in data_pois['pois']:
poi['info'] = json.loads(poi['info'])

# Datenstruktur ausgeben
for poi_data in data_pois['pois']:
start_point = Point(self.latitude, self.longitude)
end_point = Point(poi_data['lat'], poi_data['lng'])
distance = geodesic(start_point, end_point).kilometers
poi_street = poi_data.get('street', None)
adress, adress_short, street = await self.get_adress(end_point, poi_street)
if distance <= self.radius_km:
poi = POI(
id=poi_data['id'],
latitude=poi_data['lat'],
longitude=poi_data['lng'],
street=street,
vmax=poi_data['vmax'],
distance=distance,
adress=adress,
adress_short = adress_short
).to_json()
pois.append(poi)
return pois

async def close(self) -> None:
Expand Down

0 comments on commit 8ae4563

Please sign in to comment.