60 lines
1.5 KiB
PHP
60 lines
1.5 KiB
PHP
<?php
|
|
// /api/index.php
|
|
// Optional: zentrale Config laden (wenn du magst)
|
|
|
|
declare(strict_types=1);
|
|
echo $apibasedir = $_SERVER['DOCUMENT_ROOT'];
|
|
require $apibasedir. '/../config/fileload.php';
|
|
|
|
// Basis-Header (CORS, JSON)
|
|
header('Content-Type: application/json; charset=utf-8');
|
|
header('Access-Control-Allow-Origin: *');
|
|
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
|
|
header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
|
|
http_response_code(204);
|
|
exit;
|
|
}
|
|
|
|
// Pfad aus der URL holen
|
|
$uri = parse_url($_SERVER['REQUEST_URI'] ?? '/', PHP_URL_PATH);
|
|
$path = rtrim($uri, '/');
|
|
if ($path === '') {
|
|
$path = '/';
|
|
}
|
|
|
|
// Root-Info (optional)
|
|
if ($path === '/') {
|
|
echo json_encode([
|
|
'ok' => true,
|
|
'service' => 'usbcheck-api',
|
|
'version' => 1,
|
|
'endpoints' => [
|
|
'/v1/quickcheck',
|
|
'/v1/browser.quick.test',
|
|
'/internal/* (geschützt)',
|
|
],
|
|
], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
|
|
exit;
|
|
}
|
|
|
|
// Routing nach Bereich
|
|
if (str_starts_with($path, '/v1/')) {
|
|
require_once $apibasedir.'/router/router.v1.php';
|
|
exit;
|
|
}
|
|
|
|
if (str_starts_with($path, '/internal/')) {
|
|
require_once $apibasedir. '/router/router.internal.php';
|
|
exit;
|
|
}
|
|
|
|
// Fallback: unbekannter Bereich
|
|
http_response_code(404);
|
|
echo json_encode([
|
|
'ok' => false,
|
|
'error' => 'Unknown API area',
|
|
'path' => $path,
|
|
], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
|