koel/app/Services/ApplicationInformationService.php

44 lines
1.1 KiB
PHP
Raw Normal View History

<?php
namespace App\Services;
use App\Application;
use GuzzleHttp\Client;
use Illuminate\Contracts\Cache\Repository as Cache;
use Illuminate\Log\Logger;
2020-12-22 20:11:22 +00:00
use Throwable;
class ApplicationInformationService
{
2018-08-30 05:42:47 +00:00
private const CACHE_KEY = 'latestKoelVersion';
private $client;
private $cache;
private $logger;
public function __construct(Client $client, Cache $cache, Logger $logger)
{
$this->client = $client;
$this->cache = $cache;
$this->logger = $logger;
}
/**
* Get the latest version number of Koel from GitHub.
*/
2018-08-30 05:37:24 +00:00
public function getLatestVersionNumber(): string
{
2018-08-30 05:42:47 +00:00
return $this->cache->remember(self::CACHE_KEY, 1 * 24 * 60, function (): string {
try {
return json_decode(
$this->client->get('https://api.github.com/repos/phanan/koel/tags')->getBody()
)[0]->name;
2020-12-22 20:11:22 +00:00
} catch (Throwable $e) {
$this->logger->error($e);
return Application::KOEL_VERSION;
}
});
}
}