load(); use DI\Container; use Slim\Factory\AppFactory; use Slim\Routing\RouteCollectorProxy; use TorstenHettstedt\TimekeepingApi\Controller\PreflightController; use TorstenHettstedt\TimekeepingApi\Controller\WorkingHoursController; use TorstenHettstedt\TimekeepingApi\Controller\WorkingHoursViewController; use TorstenHettstedt\TimekeepingApi\Middleware\ErrorHandler; use TorstenHettstedt\TimekeepingApi\Middleware\JsonBodyParserMiddleware; use TorstenHettstedt\TimekeepingApi\Middleware\OriginAccessControlHandler; $container = new Container(); $container->set('databases', function () { $dsn = "pgsql:host={$_ENV['DATABASES_HOST']};port=5432;dbname={$_ENV['DATABASES_NAME']}"; return new PDO($dsn, $_ENV['DATABASES_USER'], $_ENV['DATABASES_PASS']); }); AppFactory::setContainer($container); $app = AppFactory::create(); $app->add(new JsonBodyParserMiddleware()); $app->addBodyParsingMiddleware(); $app->add(new OriginAccessControlHandler()); $app->addRoutingMiddleware(); $app->group('/views/working-hours', function (RouteCollectorProxy $group) { $group->options('/weekly', PreflightController::class . ':preflight'); $group->get('/weekly', WorkingHoursViewController::class . ':browseWeekly'); $group->options('/monthly', PreflightController::class . ':preflight'); $group->get('/monthly', WorkingHoursViewController::class . ':browseMonthly'); $group->options('/yearly', PreflightController::class . ':preflight'); $group->get('/yearly', WorkingHoursViewController::class . ':browseYearly'); }); $app->group('/working-hours', function (RouteCollectorProxy $group) { $group->options('', PreflightController::class . ':preflight'); $group->get('', WorkingHoursController::class . ':browse'); $group->post('', WorkingHoursController::class . ':creat'); $group->group('/{id:\d\d\d\d-\d\d-\d\d}', function (RouteCollectorProxy $group) { $group->options('', PreflightController::class . ':preflight'); $group->get('', WorkingHoursController::class . ':read'); $group->put('', WorkingHoursController::class . ':update'); }); }); $errorMiddleware = $app->addErrorMiddleware(true, true, true); $errorMiddleware->setDefaultErrorHandler(new ErrorHandler($app)); $app->run();