'text/css', 'js' => 'application/javascript', 'json' => 'application/json', 'png' => 'image/png', 'jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'gif' => 'image/gif', 'svg' => 'image/svg+xml', ]; if (isset($mimeTypes[$extension])) { header('Content-Type: ' . $mimeTypes[$extension]); } readfile($filePath); exit; } } } // Headers for JSON responses header('Content-Type: application/json'); try { switch (true) { case $requestUri === '/api/register' && $method === 'POST': $data = json_decode(file_get_contents('php://input'), true); $authController = new AuthController(); echo json_encode($authController->register( $data['name'], $data['email'], $data['password'] )); break; case $requestUri === '/api/login' && $method === 'POST': $data = json_decode(file_get_contents('php://input'), true); $authController = new AuthController(); echo json_encode($authController->login( $data['email'], $data['password'] )); break; case $requestUri === '/api/logout' && $method === 'POST': $authController = new AuthController(); echo json_encode($authController->logout()); break; case $requestUri === '/api/projects' && $method === 'GET': if (!AuthController::isAuthenticated()) { http_response_code(401); echo json_encode(['error' => 'Unauthorized']); break; } $projectController = new ProjectController(); echo json_encode($projectController->getUserProjects()); break; case $requestUri === '/api/projects' && $method === 'POST': if (!AuthController::isAuthenticated()) { http_response_code(401); echo json_encode(['error' => 'Unauthorized']); break; } $data = json_decode(file_get_contents('php://input'), true); $projectController = new ProjectController(); echo json_encode($projectController->createProject( $data['name'], $data['description'] )); break; case preg_match('/^\/api\/projects\/(\d+)$/', $requestUri, $matches) && $method === 'GET': if (!AuthController::isAuthenticated()) { http_response_code(401); echo json_encode(['error' => 'Unauthorized']); break; } $projectController = new ProjectController(); echo json_encode($projectController->getProjectDetails($matches[1])); break; case $requestUri === '/api/tasks' && $method === 'POST': if (!AuthController::isAuthenticated()) { http_response_code(401); echo json_encode(['error' => 'Unauthorized']); break; } $data = json_decode(file_get_contents('php://input'), true); $taskController = new TaskController(); echo json_encode($taskController->createTask( $data['name'], $data['description'], $data['project_id'], $data['status'] ?? 'created' )); break; case preg_match('/^\/api\/tasks\/(\d+)\/status$/', $requestUri, $matches) && $method === 'PUT': if (!AuthController::isAuthenticated()) { http_response_code(401); echo json_encode(['error' => 'Unauthorized']); break; } $data = json_decode(file_get_contents('php://input'), true); $taskController = new TaskController(); echo json_encode($taskController->updateTaskStatus( $matches[1], $data['status'] )); break; case preg_match('/^\/api\/tasks\/(\d+)$/', $requestUri, $matches) && $method === 'GET': if (!AuthController::isAuthenticated()) { http_response_code(401); echo json_encode(['error' => 'Unauthorized']); break; } $taskController = new TaskController(); echo json_encode($taskController->getTask($matches[1])); break; case preg_match('/^\/api\/tasks\/(\d+)$/', $requestUri, $matches) && $method === 'PUT': if (!AuthController::isAuthenticated()) { http_response_code(401); echo json_encode(['error' => 'Unauthorized']); break; } $data = json_decode(file_get_contents('php://input'), true); $taskController = new TaskController(); echo json_encode($taskController->updateTask( $matches[1], $data['name'], $data['description'] )); break; default: http_response_code(404); echo json_encode(['error' => 'Not Found']); break; } } catch (Exception $e) { http_response_code(500); echo json_encode(['error' => $e->getMessage()]); }