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