<?php
/**
 * CometVisu Manager backend
 * PHP version 7.4
 *
 * @package OpenAPIServer
 * @author  OpenAPI Generator team
 * @link    https://github.com/openapitools/openapi-generator
 */

/**
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 * The version of the OpenAPI document: 1.0.0
 * Generated by: https://github.com/openapitools/openapi-generator.git
 */

/**
 * NOTE: This class is auto generated by the openapi generator program.
 * https://github.com/openapitools/openapi-generator
 */

require_once __DIR__ . "/vendor/autoload.php";

use OpenAPIServer\Container;
use OpenAPIServer\SlimRouter;

// load config file
$config = [];
if (is_array($prodConfig = @include __DIR__ . "/config/prod/config.inc.php")) {
    $config = $prodConfig;
} elseif (
    is_array($devConfig = @include __DIR__ . "/config/dev/config.inc.php")
) {
    $config = $devConfig;
} else {
    throw new InvalidArgumentException("Config file missed or broken.");
}
// Create Container using PHP-DI
$container = new Container($config);
$router = new SlimRouter($container);
$app = $router->getSlimApp();
$dir = $_SERVER["PHP_SELF"];
$start = "/manager/index.php";
$basePath = substr($dir, 0, mb_strpos($dir, $start) + mb_strlen($start));
$app->setBasePath($basePath);

// Parse json, form data and xml
$app->addBodyParsingMiddleware();

/**
 * The routing middleware should be added before the ErrorMiddleware
 * Otherwise exceptions thrown from it will not be handled
 */
$app->addRoutingMiddleware();

/**
 * Add Error Handling Middleware
 *
 * @param bool $displayErrorDetails -> Should be set to false in production
 * @param bool $logErrors -> Parameter is passed to the default ErrorHandler
 * @param bool $logErrorDetails -> Display error details in error log
 * which can be replaced by a callable of your choice.

 * Note: This middleware should be added last. It will not handle any exceptions/errors
 * for middleware added after it.
 */
$app->addErrorMiddleware(
    $config["slimSettings"]["displayErrorDetails"] ?? false,
    $config["slimSettings"]["logErrors"] ?? true,
    $config["slimSettings"]["logErrorDetails"] ?? true
);

$app->run();
