@ -72,9 +72,6 @@ class WeatherStatusService {
/** @var IAppManager */
private $appManager ;
/** @var ICacheFactory */
private $cacheFactory ;
/** @var ICache */
private $cache ;
@ -116,9 +113,7 @@ class WeatherStatusService {
$this -> version = $appManager -> getAppVersion ( Application :: APP_ID );
$this -> clientService = $clientService ;
$this -> client = $clientService -> newClient ();
if ( $cacheFactory -> isAvailable ()) {
$this -> cache = $cacheFactory -> createDistributed ();
}
$this -> cache = $cacheFactory -> createDistributed ( 'weatherstatus' );
}
/**
@ -397,12 +392,12 @@ class WeatherStatusService {
* @ return array which contains the error message or the parsed JSON result
*/
private function requestJSON ( string $url , array $params = []) : array {
if ( isset ( $this -> cache )) {
$cacheKey = $url . '|' . implode ( ',' , $params ) . '|' . implode ( ',' , array_keys ( $params ));
if ( $this -> cache -> hasKey ( $cacheKey )) {
return $this -> cache -> get ( $cacheKey );
}
$cacheKey = $url . '|' . implode ( ',' , $params ) . '|' . implode ( ',' , array_keys ( $params ));
$cacheValue = $this -> cache -> get ( $cacheKey );
if ( $cacheValue !== null ) {
return $cacheValue ;
}
try {
$options = [
'headers' => [
@ -425,20 +420,20 @@ class WeatherStatusService {
return [ 'error' => $this -> l10n -> t ( 'Error' )];
} else {
$json = json_decode ( $body , true );
if ( isset ( $this -> cache )) {
// default cache duration is one hour
$cacheDuration = 60 * 60 ;
if ( isset ( $headers [ 'Expires' ]) && count ( $headers [ 'Expires' ]) > 0 ) {
// if the Expires response header is set, use it to define cache duration
$expireTs = ( new \Datetime ( $headers [ 'Expires' ][ 0 ])) -> getTimestamp ();
$nowTs = ( new \Datetime ()) -> getTimestamp ();
$duration = $expireTs - $nowTs ;
if ( $duration > $cacheDuration ) {
$cacheDuration = $duration ;
}
// default cache duration is one hour
$cacheDuration = 60 * 60 ;
if ( isset ( $headers [ 'Expires' ]) && count ( $headers [ 'Expires' ]) > 0 ) {
// if the Expires response header is set, use it to define cache duration
$expireTs = ( new \Datetime ( $headers [ 'Expires' ][ 0 ])) -> getTimestamp ();
$nowTs = ( new \Datetime ()) -> getTimestamp ();
$duration = $expireTs - $nowTs ;
if ( $duration > $cacheDuration ) {
$cacheDuration = $duration ;
}
$this -> cache -> set ( $cacheKey , $json , $cacheDuration );
}
$this -> cache -> set ( $cacheKey , $json , $cacheDuration );
return $json ;
}
} catch ( \Exception $e ) {