<?php declare(strict_types=1);

namespace App\Controller;

use Exception;

error_reporting(error_level: E_ALL);

require dirname(path: __DIR__) . '/vendor/autoload.php';

$uri = parse_url(url: $_SERVER['REQUEST_URI'], component: PHP_URL_PATH);
$uri = explode(separator: '/', string: $uri);

if ($uri[1] !== 'api') {
	$scheme = $_SERVER['REQUEST_SCHEME'];
	$host = $_SERVER['SERVER_NAME'];
	$header = "$scheme://$host/openapi/index.html";
	header(header: "Location: $header");
	exit(0);
}

header(header: "Access-Control-Allow-Origin: *");
header(header: "Content-Type: application/json; charset=UTF-8");
header(header: "Access-Control-Allow-Methods: OPTIONS,GET,POST,PUT,DELETE");
header(header: "Access-Control-Max-Age: 3600");
header(header: "Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

$requestMethod = $_SERVER["REQUEST_METHOD"];

try {
	$app = new BindAPI();
	$app->handleRequest(requestMethod: $requestMethod, uri: $uri);
} catch (Exception $e) {
	echo json_encode(value: [
		'error' => $e->getMessage()
	]);
}