aboutsummaryrefslogtreecommitdiff
path: root/public/jsonapi.php
diff options
context:
space:
mode:
authorMarcus Eibrink-Lunzenauer <lunzenauer@elan-ev.de>2021-08-20 06:11:05 +0000
committerMarcus Eibrink-Lunzenauer <lunzenauer@elan-ev.de>2021-08-20 06:11:05 +0000
commit9b6bd7e747bd5ed44d169a8e1baee0e519d209d6 (patch)
tree104c177e3c0d40d7471d7c081d61dec15cb1bab9 /public/jsonapi.php
parent8edcc69d26d73736b1bab92df28a00cd97ab8cf3 (diff)
Update der JSONAPI-Bibliotheken, fixes #80
Diffstat (limited to 'public/jsonapi.php')
-rw-r--r--public/jsonapi.php62
1 files changed, 46 insertions, 16 deletions
diff --git a/public/jsonapi.php b/public/jsonapi.php
index 6bc8384..4b32370 100644
--- a/public/jsonapi.php
+++ b/public/jsonapi.php
@@ -1,30 +1,60 @@
<?php
-use JsonApi\AppFactory;
-use JsonApi\RouteMap;
+use DI\ContainerBuilder;
+use Slim\Factory\AppFactory;
require '../lib/bootstrap.php';
require '../composer/autoload.php';
-\StudipAutoloader::addAutoloadPath($GLOBALS['STUDIP_BASE_PATH'].DIRECTORY_SEPARATOR.'vendor/oauth-php/library/');
+\StudipAutoloader::addAutoloadPath($GLOBALS['STUDIP_BASE_PATH'] . DIRECTORY_SEPARATOR . 'vendor/oauth-php/library/');
-page_open(
- [
- 'sess' => 'Seminar_Session',
- 'auth' => 'Seminar_Default_Auth',
- 'perm' => 'Seminar_Perm',
- 'user' => 'Seminar_User',
- ]
-);
+page_open([
+ 'sess' => 'Seminar_Session',
+ 'auth' => 'Seminar_Default_Auth',
+ 'perm' => 'Seminar_Perm',
+ 'user' => 'Seminar_User',
+]);
// Set base url for URLHelper class
URLHelper::setBaseUrl($GLOBALS['CANONICAL_RELATIVE_PATH_STUDIP']);
-// create app
-$appFactory = new AppFactory();
-$app = $appFactory->makeApp();
+$containerBuilder = new ContainerBuilder();
-// add routes
-$app->group('/v1', new RouteMap($app));
+$settings = require 'lib/classes/JsonApi/settings.php';
+$settings($containerBuilder);
+$dependencies = require 'lib/classes/JsonApi/dependencies.php';
+$dependencies($containerBuilder);
+
+// Build PHP_DI Container
+$container = $containerBuilder->build();
+
+// Instantiate the app
+AppFactory::setContainer($container);
+$app = AppFactory::create();
+$container->set(\Slim\App::class, $app);
+
+// Set the base path
+$app->setBasePath('/jsonapi.php');
+
+// Register middleware
+$middleware = require 'lib/classes/JsonApi/middleware.php';
+$middleware($app);
+
+// Register routes
+$routes = require 'lib/classes/JsonApi/routes.php';
+$routes($app);
+
+// Add Error Middleware
+$displayErrors = false;
+if (defined('\\Studip\\ENV')) {
+ $displayErrors = constant('\\Studip\\ENV') === 'development';
+}
+$logError = true;
+$logErrorDetails = true;
+
+$errorMiddleware = $app->addErrorMiddleware($displayErrors, $logError, $logErrorDetails);
+$errorMiddleware->setDefaultErrorHandler(new \JsonApi\Errors\ErrorHandler($app));
+
+// Run app
$app->run();