* @author Joe Cohen * @author Graham Campbell */ class AppServiceProvider extends ServiceProvider { /** * Boot the service provider. * * @param \AltThree\Bus\Dispatcher $dispatcher */ public function boot(Dispatcher $dispatcher) { $dispatcher->mapUsing(function ($command) { return Dispatcher::simpleMapping($command, 'CachetHQ\Cachet\Bus', 'CachetHQ\Cachet\Bus\Handlers'); }); $dispatcher->pipeThrough([UseDatabaseTransactions::class]); Str::macro('canonicalize', function ($url) { return preg_replace('/([^\/])$/', '$1/', $url); }); } /** * Register the service provider. * * @return void */ public function register() { $this->registerDateFactory(); $this->registerCredits(); $this->registerFeed(); $this->registerReleases(); } /** * Register the date factory. * * @return void */ protected function registerDateFactory() { $this->app->singleton(DateFactory::class, function ($app) { $appTimezone = $app['config']->get('app.timezone'); $cacheTimezone = $app['config']->get('cachet.timezone'); return new DateFactory($appTimezone, $cacheTimezone); }); } /** * Register the credits class. * * @return void */ protected function registerCredits() { $this->app->singleton(Credits::class, function ($app) { $cache = $app['cache.store']; return new Credits($cache); }); } /** * Register the feed class. * * @return void */ protected function registerFeed() { $this->app->singleton(Feed::class, function ($app) { $cache = $app['cache.store']; return new Feed($cache); }); } /** * Register the releases class. * * @return void */ protected function registerReleases() { $this->app->singleton(Releases::class, function ($app) { $cache = $app['cache.store']; $token = $app['config']->get('services.github.token'); return new Releases($cache, $token); }); } }