use apivalk\apivalk\Apivalk;
use apivalk\apivalk\ApivalkConfiguration;
use apivalk\apivalk\Cache\FilesystemCache;
use apivalk\apivalk\Router\Router;
use apivalk\apivalk\Util\ClassLocator;
// 1. Setup Router with auto-discovery
$classLocator = new ClassLocator(__DIR__ . '/src/Http/Controller', 'App\\Http\\Controller');
$routerCache = new FilesystemCache(__DIR__ . '/cache');
$router = new Router($classLocator, $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);