koel/app/Application.php

82 lines
1.9 KiB
PHP
Raw Normal View History

2015-12-13 04:42:28 +00:00
<?php
namespace App;
2015-12-27 14:06:10 +00:00
use Cache;
use GuzzleHttp\Client;
2015-12-13 04:42:28 +00:00
use Illuminate\Foundation\Application as IlluminateApplication;
use InvalidArgumentException;
2015-12-27 14:06:10 +00:00
use Log;
2015-12-13 04:42:28 +00:00
/**
* Extends \Illuminate\Foundation\Application to override some defaults.
*/
class Application extends IlluminateApplication
{
2015-12-28 01:47:32 +00:00
/**
* Current Koel version. Must start with a v, and is synced with git tags/releases.
*
* @link https://github.com/phanan/koel/releases
*/
2015-12-29 06:27:40 +00:00
const VERSION = 'v1.1.2';
2015-12-27 14:06:10 +00:00
/**
* We have merged public path and base path.
*
* @return string
*/
public function publicPath()
{
return $this->basePath;
}
2015-12-13 04:42:28 +00:00
/**
* Loads a revision'ed asset file, making use of gulp-rev
* This is a copycat of L5's Elixir, but catered to our directory structure.
*
* @param string $file
*
* @return string
*/
public function rev($file)
{
static $manifest = null;
if (is_null($manifest)) {
$manifest = json_decode(file_get_contents($this->publicPath().'/public/build/rev-manifest.json'), true);
2015-12-13 04:42:28 +00:00
}
if (isset($manifest[$file])) {
return "/public/build/{$manifest[$file]}";
}
throw new InvalidArgumentException("File {$file} not defined in asset manifest.");
}
2015-12-27 14:06:10 +00:00
/**
* Get the latest version number of Koel from Github.
*
* @return string
*/
public function getLatestVersion(Client $client = null)
{
$client = $client ?: new Client();
if ($v = Cache::get('latestKoelVersion')) {
return $v;
}
try {
$v = json_decode($client->get('https://api.github.com/repos/phanan/koel/tags')->getBody())[0]->name;
// Cache for a week
Cache::put('latestKoelVersion', $v, 7 * 24 * 60);
return $v;
} catch (\Exception $e) {
Log::error($e);
return self::VERSION;
}
}
2015-12-13 04:42:28 +00:00
}