From 1e311242a95fd7c5a2187135d8e56c72b74d91ff Mon Sep 17 00:00:00 2001 From: matthieu Date: Sun, 15 Mar 2026 18:09:51 +0100 Subject: [PATCH] feat(bookstack) : add BookStackShelf API resource for listing shelves Co-Authored-By: Claude Sonnet 4.6 --- src/ApiResource/BookStackShelf.php | 29 ++++++++++++++++++++++ src/State/BookStackShelfProvider.php | 36 ++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 src/ApiResource/BookStackShelf.php create mode 100644 src/State/BookStackShelfProvider.php diff --git a/src/ApiResource/BookStackShelf.php b/src/ApiResource/BookStackShelf.php new file mode 100644 index 0000000..6c434a9 --- /dev/null +++ b/src/ApiResource/BookStackShelf.php @@ -0,0 +1,29 @@ + ['bookstack_shelf:read']], + provider: BookStackShelfProvider::class, + security: "is_granted('ROLE_ADMIN')", + ), + ], +)] +final class BookStackShelf +{ + #[Groups(['bookstack_shelf:read'])] + public int $id = 0; + + #[Groups(['bookstack_shelf:read'])] + public string $name = ''; +} diff --git a/src/State/BookStackShelfProvider.php b/src/State/BookStackShelfProvider.php new file mode 100644 index 0000000..71252e2 --- /dev/null +++ b/src/State/BookStackShelfProvider.php @@ -0,0 +1,36 @@ +bookStackApiService->listShelves(); + } catch (BookStackApiException $e) { + throw new BadRequestHttpException($e->getMessage(), $e); + } + + return array_map(static function (array $shelf): BookStackShelf { + $dto = new BookStackShelf(); + $dto->id = $shelf['id'] ?? 0; + $dto->name = $shelf['name'] ?? ''; + + return $dto; + }, $shelves); + } +}