Enhance API error handling, add lastError tracking, and implement admin home template

This commit is contained in:
marc-go committed 2026-10-11 14:37:56 +02:00
1 parent ce0777bb33
commit 205f2e2f73
9 files changed
+257 -33

No files matched your search

+42 -10
View File
@@ -16,6 +16,7 @@ class gbAPI {
private $config;
private $internal;
private $response;
private $lastError;
private function b64url_encode($data) {
return rtrim(strtr(base64_encode($data), "+/", "-_"), "=");
@@ -40,6 +41,8 @@ class gbAPI {
"error_text" => "Authentication failed."
];
$this->lastError = $data;
$this->answer($status, $data, true);
}
}
@@ -52,17 +55,25 @@ class gbAPI {
try {
$input = json_decode(file_get_contents("php://input"), true);
} catch (JsonException $error) {
$this->answer(400, [
$error_payload = [
"error" => "invalid_body",
"error_text" => "Can not read request body: " . $error
]);
];
$this->lastError = $error_payload;
$this->answer(400, $error_payload, true);
}
return $input;
}else{
$this->answer(400, [
$error_payload = [
"error" => "false_request_method",
"error_text" => "Only POST allowed"
], true);
];
$this->lastError = $error_payload;
$this->answer(400, $error_payload, true);
}
}
@@ -191,6 +202,14 @@ class gbAPI {
}
}
function returnLastError() {
if (isset($this->lastError)) {
return $this->lastError;
}else{
return NULL;
}
}
function getAnswer() {
if (!isset($this->response)) {
$error = [
@@ -199,6 +218,8 @@ class gbAPI {
"error_text" => "API Returned nothing."
];
$this->lastError = $error;
return $error;
}
@@ -218,17 +239,25 @@ class gbAPI {
$db_path = APP_PATH . $db_name;
if (!is_file($db_path)) {
$api->answer(500, [
$error_payload = [
"error" => "database_not_found",
"error_text" => "The Database was not found."
], true);
];
$this->lastError = $error_payload;
$api->answer(500, $error_payload, true);
}
if (!is_writeable($db_path)) {
$this->answer(500, [
$error_payload = [
"error" => "database_not_writeable",
"error_text" => "The Database is not writeable."
]);
];
$this->lastError = $error_payload;
$this->answer(500, $error_payload, true);
return;
}
@@ -250,11 +279,14 @@ class gbAPI {
$command = "SELECT name, value FROM settings WHERE name = :name";
$value = $this->dbCommand($command, true, true, [":name" => $key]);
if (isset($value[0]["value"])) {
return $value[0]["value"];
}else{
return;
$this->answer(500, [
"error" => "query_returned_nothing",
"error_text" => "The SQL Query Returned nothing usable. Check Database Permissions."
]);
}
}
}