Skip to content
Snippets Groups Projects
Commit 86496e2d authored by Robert Goldmann's avatar Robert Goldmann
Browse files

Fixed #14 - calculate cache key in weather service instead of helper

parent 5f7a3c08
No related branches found
No related tags found
No related merge requests found
......@@ -4,7 +4,3 @@ def join_url_parts(*args: str) -> str:
def round_to_decimals(value, decimals) -> str:
return '{:.{}f}'.format(value, decimals)
def determine_weather_cache_key(lat: float, lon: float):
return f'weather_{lat}_{lon}'
......@@ -17,6 +17,11 @@ class WeatherService(MultiCacheKeyService):
"apiKey": "myApiKey"
}
def get_data(self, cacheKey: str, fetchIntervalInSeconds: int, settings: Dict) -> Dict:
if not cacheKey:
cacheKey = f'weather_{settings["lat"]}_{settings["lon"]}'
return super().get_data(cacheKey, fetchIntervalInSeconds, settings)
def _fetch_data(self, settings: Dict) -> Dict:
response = requests.get(self.URL, params={
'lat': settings['lat'],
......
......@@ -14,10 +14,11 @@ class CurrentWeatherTile(Tile):
def fetch(self, pageName: str) -> Dict:
weatherService = ServiceManager.get_instance().get_service_by_type_name('WeatherService')
cacheKey = Helpers.determine_weather_cache_key(self._settings['lat'], self._settings['lon'])
fetchIntervalInSeconds = 60 * 10 # query api less often
weatherData = weatherService.get_data(cacheKey, fetchIntervalInSeconds, self._settings)
# cache key will be determined in service
weatherData = weatherService.get_data('', fetchIntervalInSeconds, self._settings)
currentWeather = weatherData['current']
currentTemperature = currentWeather['temp']
feelsLike = currentWeather['feels_like']
......
......@@ -18,10 +18,11 @@ class SevenDaysForecastTile(Tile):
def fetch(self, pageName: str) -> Dict:
weatherService = ServiceManager.get_instance().get_service_by_type_name('WeatherService')
cacheKey = Helpers.determine_weather_cache_key(self._settings['lat'], self._settings['lon'])
fetchIntervalInSeconds = 60 * 10 # query api less often
weatherData = weatherService.get_data(cacheKey, fetchIntervalInSeconds, self._settings)
# cache key will be determined in service
weatherData = weatherService.get_data('', fetchIntervalInSeconds, self._settings)
forecast = weatherData['daily']
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment