$code, "message" => $message)); exit(0); } spl_autoload_register('load'); DB::init("localhost", "nutzername", "passwort", "datenbank"); $media_dir = "/mnt/cdn/"; function checkAPIKey(): string { if (isset($_SERVER['HTTP_API_KEY'])) { if (DB::get()->query("SELECT null FROM api_keys WHERE apikey=?", $_SERVER['HTTP_API_KEY'])->numRows() != 1) sendJSON(502, "You need to provide an valid api key."); } else sendJSON(502, "You need to provide an valid api key."); return $_SERVER['HTTP_API_KEY']; } Router::add("/upload", function () use ($media_dir) { $key = checkAPIKey(); if(!empty($_FILES['asset'])) { $fileID = substr(number_format(time() * mt_rand(),0,'',''),0,16); $path = $media_dir.$fileID; $asset = $_FILES['asset']; $fileName = $asset['name']; if(move_uploaded_file($_FILES['asset']['tmp_name'], $path)) { $split = explode(".", $fileName); $fileEnding = substr($split[count($split)-1], -5); DB::get()->query("INSERT INTO media (assetID, assetEnding, assetOwner, assetName, assetDescription) VALUES (?, ?, ?, ?, ?)", $fileID, $fileEnding, $key, $fileName, "test"); sendJSON(1, "https://cdn.sheepstar.xyz/".$fileID.".".$fileEnding); } else { sendJSON(500, "File upload failed"); } } }, "post"); Router::add("/delete", function () use ($media_dir) { checkAPIKey(); parse_str(file_get_contents("php://input"),$post_vars); if (isset($post_vars['assetID'])) { $assetID = $post_vars['assetID']; $query = DB::get()->query("SELECT null FROM media WHERE assetID=?", $assetID)->numRows(); if ($query) { unlink($media_dir.$assetID); DB::get()->query("DELETE FROM media WHERE assetID=?", $assetID); sendJSON(1, "Resource deleted."); } else sendJSON(404, "Resource not found."); } else sendJSON(405, "Please provide an assetID."); }, "delete"); Router::add("^/[0-9]+\.[a-zA-Z1-9]+$", function () use ($media_dir) { $parsed_url = parse_url($_SERVER['REQUEST_URI']); $url = str_replace("/", "", $parsed_url['path']); $split = explode(".", $url); $assetID = $split[0]; $assetEnding = $split[count($split)-1]; $query = DB::get()->query("SELECT null FROM media WHERE assetID=? AND assetEnding=?", $assetID, $assetEnding)->numRows(); if ($query == 1) { header("Content-Type: " . MimeTypes::getFromString($url)); echo file_get_contents($media_dir.$assetID); } else sendJSON(404, "Resource not found."); }); Router::add(".+", function () { sendJSON(402, "Please use the correct URL format"); }); Router::run();