CLI: API templates

This commit is contained in:
2024-04-04 12:46:58 +02:00
parent a7dc4c0d2f
commit 10f7025569
12 changed files with 244 additions and 66 deletions

View File

@@ -248,7 +248,7 @@ abstract class Request {
// Check for permission
$req = new \Core\API\Permission\Check($this->context);
$this->success = $req->execute(array("method" => self::getEndpoint()));
$this->success = $req->execute(["method" => self::getEndpoint()]);
$this->lastError = $req->getLastError();
if (!$this->success) {
return false;
@@ -336,11 +336,19 @@ abstract class Request {
return null;
}
$isNestedAPI = $reflectionClass->getParentClass()->getName() !== Request::class;
$parentClass = $reflectionClass->getParentClass();
if ($parentClass === false) {
return null;
}
$isNestedAPI = $parentClass->getName() !== Request::class;
if (!$isNestedAPI) {
# e.g. /api/stats or /api/info
$methodName = $reflectionClass->getShortName();
return $prefix . lcfirst($methodName);
} else if ($parentClass->getName() === \TestRequest::class) {
$methodName = $reflectionClass->getShortName();
return $prefix . "/e2e-test/" . lcfirst($methodName);
} else {
# e.g. /api/user/login
$methodClass = $reflectionClass;
@@ -348,6 +356,10 @@ abstract class Request {
while (!endsWith($nestedClass->getName(), "API")) {
$methodClass = $nestedClass;
$nestedClass = $nestedClass->getParentClass();
if (!$nestedClass) {
return null;
}
}
$nestedAPI = substr(lcfirst($nestedClass->getShortName()), 0, -3);

View File

@@ -102,7 +102,7 @@ namespace Core\API {
if ($count === 1) {
return $string;
} else {
return "the next $count ${string}s";
return "the next $count {$string}s";
}
}
@@ -222,7 +222,7 @@ namespace Core\API\User {
public function __construct(Context $context, $externalCall = false) {
parent::__construct($context, $externalCall,
self::getPaginationParameters(['id', 'name', 'fullName', 'email', 'groups', 'registeredAt', 'confirmed'],
self::getPaginationParameters(['id', 'name', 'fullName', 'email', 'groups', 'registeredAt', 'active', 'confirmed'],
'id', 'asc')
);
}

View File

@@ -510,7 +510,7 @@ class RowIteratorMySQL extends RowIterator {
return $row;
}
public function rewind() {
public function rewind(): void {
if ($this->useCache) {
$this->rowIndex = 0;
} else if ($this->rowIndex !== 0) {

View File

@@ -21,15 +21,15 @@ abstract class RowIterator implements \Iterator {
protected abstract function getNumRows(): int;
protected abstract function fetchRow(int $index): array;
public function current() {
public function current(): array {
return $this->fetchRow($this->rowIndex);
}
public function next() {
public function next(): void {
$this->rowIndex++;
}
public function key() {
public function key(): int {
return $this->rowIndex;
}

View File

@@ -68,4 +68,20 @@ return [
"color" => "Farbe",
"logged_in_as" => "Eingeloggt als",
"active" => "Aktiv",
"group" => "Gruppe",
# dialogs
"fetch_group_members_error" => "Fehler beim Holen der Gruppenmitglieder",
"remove_group_member_error" => "Fehler beim Entfernen des Gruppenmitglieds",
"add_group_member_error" => "Fehler beim Hinzufügen des Gruppenmitglieds",
"create_group_error" => "Fehler beim Erstellen der Gruppe",
"update_group_error" => "Error beim Aktualisieren der Gruppe",
"delete_group_error" => "Error beim Löschen der Gruppe",
"search_users_error" => "Fehler beim Suchen des Benutzers",
"delete_group_title" => "Gruppe löschen",
"delete_group_text" => "Möchten Sie diese Gruppe wirklich löschen? Dies kann nicht rückgängig gemacht werden.",
"remove_group_member_title" => "Mitglied entfernen",
"remove_group_member_text" => "Möchten Sie wirklich den Benutzer '%s' von dieser Gruppe entfernen?",
"add_group_member_title" => "Mitglied hinzufügen",
"add_group_member_text" => "Einen Benutzer suchen um ihn der Gruppe hinzuzufügen",
];

View File

@@ -38,4 +38,6 @@ return [
"remove_route_error" => "Fehler beim Entfernen der Route",
"regenerate_router_cache_error" => "Fehler beim Erzeugen des Router Caches",
"regenerate_router_cache_success" => "Router Cache erfolgreich erzeugt",
"delete_route_title" => "Route löschen",
"delete_route_text" => "Möchten Sie wirklich die folgende Route löschen?",
];

View File

@@ -68,4 +68,20 @@ return [
"color" => "Color",
"logged_in_as" => "Logged in as",
"active" => "Active",
"group" => "Group",
# dialogs
"fetch_group_members_error" => "Error fetching group members",
"remove_group_member_error" => "Error removing group member",
"add_group_member_error" => "Error adding member",
"create_group_error" => "Error creating group",
"update_group_error" => "Error updating group",
"delete_group_error" => "Error deleting group",
"search_users_error" => "Error searching users",
"delete_group_title" => "Delete Group",
"delete_group_text" => "Do you really want to delete this group? This action cannot be undone.",
"remove_group_member_title" => "Remove member",
"remove_group_member_text" => "Do you really want to remove user '%s' from this group?",
"add_group_member_title" => "Add member",
"add_group_member_text" => "Search a user to add to the group",
];

View File

@@ -38,4 +38,6 @@ return [
"remove_route_error" => "Error removing route",
"regenerate_router_cache_error" => "Error regenerating router cache",
"regenerate_router_cache_success" => "Router cache successfully regenerated",
"delete_route_title" => "Delete Route",
"delete_route_text" => "Do you really want to delete the following route?",
];