use apivalk\apivalk\Apivalk;
use apivalk\apivalk\ApivalkConfiguration;
use apivalk\apivalk\Router\Router;
use apivalk\apivalk\Router\Cache\RouterFilesystemCache;
use apivalk\apivalk\Util\ClassLocator;
// 1. Setup Router with auto-discovery
$classLocator = new ClassLocator(__DIR__ . '/src/Http/Controller', 'App\\Http\\Controller');
$routerCache = new RouterFilesystemCache(__DIR__ . '/cache/router.json', $classLocator);
$router = new Router($routerCache);
// 2. Create Base Configuration
$configuration = new ApivalkConfiguration($router, null, [ApivalkExceptionHandler::class, 'handle']);
// 3. Add Middlewares
$configuration->addMiddleware(new SanitizeMiddleware());
$configuration->addMiddleware(new RequestValidationMiddleware());
// 4. Run the App
$apivalk = new Apivalk($configuration);
$response = $apivalk->run();
// 5. Render response
$apivalk->getRenderer()->render($response);