From 04d53ebe105c1ca73acc9714cb0be86f2e8f8d47 Mon Sep 17 00:00:00 2001 From: Goffi Date: Wed, 18 Mar 2026 10:54:59 +0100 Subject: [PATCH] plugin forge: Check that repository exist before returning counters. --- libervia/backend/plugins/plugin_forge.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/libervia/backend/plugins/plugin_forge.py b/libervia/backend/plugins/plugin_forge.py index eefbc9f2..5528fe0f 100644 --- a/libervia/backend/plugins/plugin_forge.py +++ b/libervia/backend/plugins/plugin_forge.py @@ -190,8 +190,14 @@ class Forge: return defer.succeed(repositories.model_dump_json()) def repositories_get( - self, client: SatXMPPEntity, target_profile: str, data: dict | None = None + self, client: SatXMPPEntity, target_profile: str ) -> Repositories: + """Retrieve repositories of a profile. + @param client: Client instance. + @param target_profile: Profile to retrieve repositories from. + @return: List of repositories. + @raise exceptions.NotFound: No repository found. + """ try: return self.settings.repositories[target_profile] except KeyError: @@ -270,7 +276,15 @@ class Forge: @param repository_name: Name of the repository. @param request: Which counters to retrieve. @return: List of clone counters. + @raise exceptions.NotFound: The requested repository can't be found. """ + repositories = self.repositories_get(client, target_profile) + try: + next(r for r in repositories if r.name == repository_name) + except StopIteration: + raise exceptions.NotFound( + f"{target_profile} has not repository named {repository_name}." + ) namespace = PLUGIN_INFO[C.PI_NAME] profile_id = G.storage.profiles[target_profile] key_prefix = f"counter:{repository_name}:"