Erant-OldApp/api/index.php

71 lines
1.9 KiB
PHP
Raw Normal View History

2022-09-01 15:15:53 +00:00
<?php
require __DIR__ . '/vendor/autoload.php';
require __DIR__ . '/utils/cors.php';
2022-09-01 15:44:33 +00:00
use Medoo\Medoo;
2022-09-01 15:15:53 +00:00
cors();
header('Content-Type: application/json; charset=utf-8');
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
function env($key) {
global $_ENV;
return array_key_exists($key, $_ENV) ? $_ENV[$key] : null;
}
$router = new \Bramus\Router\Router();
2022-09-01 15:44:33 +00:00
$conn = new mysqli(env("DB_HOST"), env("DB_USER"), env("DB_PASSWORD"), env("DB_DATABASE"));
/*
$database = new Medoo([
'type' => 'mysql',
'host' => env("DB_HOST"),
'database' => env("DB_DATABASE"),
'username' => env("DB_USER"),
'password' => env("DB_PASSWORD")
]);
*/
2022-09-01 15:15:53 +00:00
$data = json_decode(file_get_contents("php://input"), true);
$routesDirectory = __DIR__ . "/routes";
$getFolderContentUtil = null;
2022-09-01 15:44:33 +00:00
$getFolderContentUtil = function($dir) use($routesDirectory, &$getFolderContentUtil, $router, $data, $database) {
2022-09-01 15:15:53 +00:00
$files = scandir($dir);
$filter = '/\.php$/';
foreach($files as $key => $value) {
$path = realpath($dir.DIRECTORY_SEPARATOR.$value);
$pathWithoutRoot = str_replace($routesDirectory, '', $path);
$pathWithoutRelativeRoot = str_replace($dir, '', $path);
if(!is_dir($path)) {
if(empty($filter) || preg_match($filter, $path)) {
$error = false;
2022-09-01 15:44:33 +00:00
$response = require $path;
2022-09-01 15:15:53 +00:00
if(!empty($response) && is_array($response)) {
foreach($response as $key => $fn) {
2022-09-01 15:44:33 +00:00
$router->{$key}(str_replace(".php", '', $pathWithoutRelativeRoot), function() use($router, $fn, $data, $error, $database) {
$responseResult = $fn($data, getallheaders(), $database, $error, $router);
2022-09-01 15:15:53 +00:00
if($responseResult) {
echo json_encode($responseResult);
}
});
}
}
}
} else if($value != "." && $value != "..") {
$router->mount($pathWithoutRelativeRoot, function() use($getFolderContentUtil, $path, $filter) {
$getFolderContentUtil($path);
});
}
}
};
$getFolderContentUtil($routesDirectory);
$router->run();