From 7b1aa22c159ab49fb93d1e461807356d685b5adf Mon Sep 17 00:00:00 2001 From: Matthieu Date: Fri, 13 Mar 2026 13:58:09 +0100 Subject: [PATCH] feat : add Gitea repositories list endpoint Co-Authored-By: Claude Opus 4.6 --- src/ApiResource/GiteaRepository.php | 32 ++++++++++++++++++++++++ src/State/GiteaRepositoryProvider.php | 36 +++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 src/ApiResource/GiteaRepository.php create mode 100644 src/State/GiteaRepositoryProvider.php diff --git a/src/ApiResource/GiteaRepository.php b/src/ApiResource/GiteaRepository.php new file mode 100644 index 0000000..8022b74 --- /dev/null +++ b/src/ApiResource/GiteaRepository.php @@ -0,0 +1,32 @@ + ['gitea_repo:read']], + provider: GiteaRepositoryProvider::class, + security: "is_granted('ROLE_ADMIN')", + ), + ], +)] +final class GiteaRepository +{ + #[Groups(['gitea_repo:read'])] + public string $fullName = ''; + + #[Groups(['gitea_repo:read'])] + public string $name = ''; + + #[Groups(['gitea_repo:read'])] + public string $owner = ''; +} diff --git a/src/State/GiteaRepositoryProvider.php b/src/State/GiteaRepositoryProvider.php new file mode 100644 index 0000000..7808ddd --- /dev/null +++ b/src/State/GiteaRepositoryProvider.php @@ -0,0 +1,36 @@ +giteaApiService->listRepositories(); + } catch (GiteaApiException) { + return []; + } + + return array_map(static function (array $repo): GiteaRepository { + $dto = new GiteaRepository(); + $dto->fullName = $repo['full_name'] ?? ''; + $dto->name = $repo['name'] ?? ''; + $dto->owner = $repo['owner']['login'] ?? ''; + + return $dto; + }, $repos); + } +}