<?php
namespace TelegramCliWrapper\Services\Weather;
use TelegramCliWrapper\Config;
class OpenWeatherApi
{
/** @var mixed */
protected $weatherInfo;
public function __construct()
{
$cacheData = __DIR__ . '/../../../data/weather-cached-data.json';
if (!file_exists($cacheData) || (filemtime($cacheData) < (intval(date("U")) - 15*60*60))) {
$config = Config::getInstance()->get('weather');
$city = $config['city'];
$country = $config['country'];
$appid = $config['appid'];
$info = file_get_contents("http://api.openweathermap.org/data/2.5/weather?q={$city},{$country}&APPID={$appid}");
file_put_contents($cacheData, $info);
}
$this->weatherInfo = json_decode(file_get_contents($cacheData), true);
}
/**
* @return array
*/
public function getWeatherInfo()
{
return $this->weatherInfo;
}
public function getWeatherInfoAsString()
{
if (!is_array($this->weatherInfo)){
return "Seems that openWeathermap is not configured correctly";
}
return sprintf(
"In %s (%s) weather is %s - %s\nWind speed is %s.\nTemperature right now is %dÂșC\nHumidity is %s",
$this->weatherInfo['name'],
$this->weatherInfo['sys']['country'],
$this->weatherInfo['weather'][0]['main'],
$this->weatherInfo['weather'][0]['description'],
$this->weatherInfo['wind']['speed'],
round($this->weatherInfo['main']['temp'] - 273, 0),
$this->weatherInfo['main']['humidity']
);
}
}
|