aboutsummaryrefslogtreecommitdiff
path: root/src/CamilStaps/BotleaguesApi/BotleaguesApiServiceProvider.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/CamilStaps/BotleaguesApi/BotleaguesApiServiceProvider.php')
-rw-r--r--src/CamilStaps/BotleaguesApi/BotleaguesApiServiceProvider.php111
1 files changed, 111 insertions, 0 deletions
diff --git a/src/CamilStaps/BotleaguesApi/BotleaguesApiServiceProvider.php b/src/CamilStaps/BotleaguesApi/BotleaguesApiServiceProvider.php
new file mode 100644
index 0000000..bb90671
--- /dev/null
+++ b/src/CamilStaps/BotleaguesApi/BotleaguesApiServiceProvider.php
@@ -0,0 +1,111 @@
+<?php
+namespace CamilStaps\BotleaguesApi;
+
+use \Illuminate\Support\Facades\Request;
+use \Illuminate\Support\ServiceProvider;
+use 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->package('camil-staps/botleagues-api', null, __DIR__.'/../..');
+ #$this->loadAutoloader(base_path('vendor'));
+
+ $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__ . '/../../filters.php';
+
+ $api = app('api.router');
+ include __DIR__ . '/../../routes.php';
+
+ // To allow loading API requests from the specified domain
+ $allowed_origin = config('botleaguesapi.allowed_origin');
+ if (is_array($allowed_origin)) {
+ $origin = Request::header('Origin');
+ if (in_array($origin, $allowed_origin)) {
+ header('Access-Control-Allow-Origin: ' . $origin);
+ } else {
+ header('Access-Control-Allow-Origin: ' . $allowed_origin[0]);
+ }
+ } else {
+ header('Access-Control-Allow-Origin: ' . $allowed_origin);
+ }
+ header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
+ header('Access-Control-Allow-Headers: Authorization');
+
+ $this->setupErrorHandlers();
+ }
+
+ /**
+ * Register the service provider.
+ *
+ * @return void
+ */
+ public function register()
+ {
+ }
+
+ /**
+ * Get the services provided by the provider.
+ *
+ * @return array
+ */
+ public function provides()
+ {
+ return array('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 Response::make(
+ ['error' => 'Endpoint not found'],
+ 404);
+ });
+ $exception->register(function(\Illuminate\Database\Eloquent\ModelNotFoundException $e) {
+ return Response::make(
+ ['error' => 'Resource not found'],
+ 404);
+ });
+ $exception->register(function(\Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException $e) {
+ return Response::make(
+ ['error' => !config('app.debug') || empty($e->getMessage()) ? 'Access denied' : $e->getMessage()],
+ 404);
+ });
+ $exception->register(function(Exception\ValidationException $e) {
+ return Response::make(
+ [
+ 'error' => $e->getMessage(),
+ 'errors' => $e->errors
+ ],
+ 500);
+ });
+
+ $exception->register(function(\Exception $e) {
+ return Response::make(
+ ['error' => config('app.debug') ? $e->getMessage() : "Internal error"],
+ 500);
+ });
+ }
+
+}