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); + } +}