* * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ namespace CamilStaps\BotleaguesApi; use Illuminate\Support\Facades\App; use \Illuminate\Support\Facades\Request; use \Illuminate\Support\ServiceProvider; use \Dingo\Api\Http\Response; class BotleaguesApiServiceProvider extends ServiceProvider { /** * Indicates if loading of the provider is deferred. * * @var bool */ protected $defer = false; /** * Bootstrap the application events. * * @return void */ public function boot() { $this->loadViewsFrom(__DIR__ . '/../../views', 'botleagues-api'); $this->publishes([ __DIR__ . '/../../views' => base_path('resources/view/vendor/botleagues-api')], 'views'); //$this->publishes([ __DIR__ . '/../../config/botleaguesapi.php' => config_path('botleaguesapi.php')], 'config'); include __DIR__ . '/../../routes.php'; $request = app('request'); if ($request->isMethod('OPTIONS')) { app()->options($request->path(), function() { return response('', 200); }); } $this->setupErrorHandlers(); config(['api.auth' => [ 'basic' => function ($app) { return new \Dingo\Api\Auth\Provider\Basic($app['auth']); }, 'token' => function ($app) { return new \CamilStaps\BotleaguesApi\TokenAuthenticationProvider; }, 'activationcode' => function ($app) { return new \CamilStaps\BotleaguesApi\ActivationCodeAuthenticationProvider; } ]]); } /** * Register the service provider. * * @return void */ public function register() { } /** * Get the services provided by the provider. * * @return array */ public function provides() { return ['CamilStaps\BotleaguesApi\BotleaguesApiServiceProvider']; } /** * Setup nice error handlers for exceptions and fatal errors */ private function setupErrorHandlers() { $exception = app('api.exception'); $exception->register(function(\Symfony\Component\HttpKernel\Exception\NotFoundHttpException $e) { return new Response( ['error' => 'Endpoint not found'], 404); }); $exception->register(function(\Illuminate\Database\Eloquent\ModelNotFoundException $e) { return new Response( ['error' => 'Resource not found'], 404); }); $exception->register(function(\Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException $e) { return new Response( ['error' => !env('APP_DEBUG') || empty($e->getMessage()) ? 'Access denied' : $e->getMessage()], 404); }); $exception->register(function(Exception\ValidationException $e) { return new Response( [ 'error' => $e->getMessage(), 'errors' => $e->errors ], 500); }); $exception->register(function(\Exception $e) { return new Response( ['error' => env('APP_DEBUG') ? $e->getMessage() : "Internal error"], 500); }); } }