Cachet is now a Laravel 5 app

This commit is contained in:
Joseph Cohen
2015-03-20 18:30:45 -06:00
parent 7cfa158e68
commit b4ac66d727
338 changed files with 4164 additions and 4114 deletions
+64
View File
@@ -0,0 +1,64 @@
<?php
namespace CachetHQ\Cachet\Segment;
use CachetHQ\Cachet\Facades\Setting;
use CachetHQ\Cachet\Models\Setting as SettingModel;
use Carbon\Carbon;
use Illuminate\Database\QueryException;
class CacheRepository implements RepositoryInterface
{
/**
* @var \CachetHQ\Cachet\Segment\RepositoryInterface
*/
protected $repository;
/**
* Instantiates a new instance of the Cache Repository.
*
* @param \CachetHQ\Cachet\Segment\RepositoryInterface $repository
*/
public function __construct(RepositoryInterface $repository)
{
$this->repository = $repository;
}
/**
* Determines whether to use the segment_write_key setting or to fetch a new.
*
* @return string
*/
public function fetch()
{
$writeKey = null;
// We might not be setup yet.
try {
// Firstly, does the setting exist?
if (false === ($writeKey = Setting::get('segment_write_key'))) {
// No, let's go fetch it.
$writeKey = $this->repository->fetch();
Setting::set('segment_write_key', $writeKey);
} else {
// It does, but how old is it?
$setting = SettingModel::where('name', 'segment_write_key')->first();
// It's older than an hour, let's refresh
if ($setting->updated_at->lt(Carbon::now()->subHour())) {
$writeKey = $this->repository->fetch();
// Update the setting. This is done manual to make sure updated_at is overwritten.
$setting->value = $writeKey;
$setting->updated_at = Carbon::now();
$setting->save();
}
}
} catch (QueryException $e) {
// Just return it until we're setup.
$writeKey = $this->repository->fetch();
}
return $writeKey;
}
}
+40
View File
@@ -0,0 +1,40 @@
<?php
namespace CachetHQ\Cachet\Segment;
use GuzzleHttp\ClientInterface;
class HttpRepository implements RepositoryInterface
{
/**
* @var \Guzzle\GuzzleClient
*/
protected $client;
/**
* @var string
*/
protected $url;
/**
* Instantiates a new instance of the SegmentApi class.
*
* @param \Guzzle\GuzzleClient $client
* @param string $url
*/
public function __construct(ClientInterface $client, $url)
{
$this->client = $client;
$this->url = $url;
}
/**
* Fetches the segment_write_key from the given url.
*
* @return string
*/
public function fetch()
{
return $this->client->get($this->url)->json()['segment_write_key'];
}
}
+13
View File
@@ -0,0 +1,13 @@
<?php
namespace CachetHQ\Cachet\Segment;
interface RepositoryInterface
{
/**
* Returns the segment_write_key.
*
* @return string
*/
public function fetch();
}