for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Helix\Asana\Api\Laravel;
use DateInterval;
use Helix\Asana\Api;
use Helix\Asana\Api\SimpleCache;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\ServiceProvider;
class AsanaServiceProvider extends ServiceProvider implements DeferrableProvider {
const NAME = 'asana';
public function boot () {
$this->publishes([__DIR__ . '/config/asana.php' => App::configPath('asana.php')]);
}
public function provides () {
return [self::NAME];
public function register () {
$this->app->singleton(self::NAME, function(Application $app) {
$config = $app['config'][self::NAME];
/** @var Api $api */
$api = $app->make(Api::class, [$config['token']]);
// cache?
if ($config['cache'] ?? false) {
/** @var SimpleCache $cache */
$cache = $app->make(SimpleCache::class, [Cache::getFacadeRoot()]);
$api->setCache($cache);
// ttl
if ($ttl = $config['cache_ttl'] ?? null) {
$cache->setTtl(new DateInterval($ttl));
return $api;
});