Files
api/index.php
T
2024-12-16 08:54:03 +01:00

94 lines
2.5 KiB
PHP

<?php global $DEBUG, $CONFIG_DB, $ENCRYPTION_KEY, $CORS, $WD, $db, $response, $request, $router;
/**
* This is the main entry point to the Truck Wash API.
*/
const WD = __DIR__;
require_once 'config.php';
/** Debug */
if ($DEBUG) {
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
}
/** CORS */
header("Access-Control-Allow-Origin: $CORS");
header("Access-Control-Allow-Headers: Content-Type, Authorization");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
/** Autoload */
require_once 'vendor/autoload.php';
/** Load all Interfaces */
foreach (glob(WD . '/interfaces/*.php') as $interface) {
require_once $interface;
}
/** Load all Traits */
foreach (glob(WD . '/traits/*.php') as $trait) {
require_once $trait;
}
/** Load all Classes */
require_once 'classes/encrypt.php';
require_once 'classes/authentication.php';
require_once 'classes/object_property.php';
require_once 'classes/router.php';
require_once 'classes/db.php';
require_once 'classes/response.php';
require_once 'classes/request.php';
require_once 'classes/ratelimit.php';
/**
* Modules
* Load all the modules
*/
require_once 'modules/economic/economic_m.php';
require_once 'modules/economic/customers/economicCustomers.php';
require_once 'modules/economic/customers/economic_customer_mo.php';
require_once 'modules/economic/invoices/draft/economicInvoicesDrafts.php';
require_once 'modules/economic/invoices/draft/economic_invoice_draft_mo.php';
use classes\response;
use classes\request;
use classes\db;
use classes\router;
// Start the session
$router = new router();
$response = new response();
$request = new request();
$db = new db($CONFIG_DB);
// Connect to the database, and ensure the connection is successful
try {
$db->connect();
} catch (Exception $e) {
$response->error($e->getMessage(), 500);
}
// Load all the traits
foreach (glob(WD . '/traits/*.php') as $trait) {
require_once $trait;
}
// Load all the routes
foreach (glob(WD . '/routes/*.php') as $route) {
require_once $route;
}
/** Load all Objects */
foreach (glob(WD . '/objects/*.php') as $object) {
try {
require_once $object;
} catch (Exception $e) {
$response->error($e->getMessage(), 500);
}
}
// Autoload all the routes
$router->auto_load_routes(WD . '/routes');
/** If no matching route is found, return a 404 */
if (!$response->is_matching_route_found()) {
// Debug
$response->add_debug(['message' => 'No matching route found']);
$response->not_found();
}