OPC # 0001: Gitea services

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
amadzarak
2026-04-25 19:35:46 -04:00
parent 76962a6af4
commit 65a6b4afaf
13 changed files with 457 additions and 93 deletions
+27 -19
View File
@@ -23,14 +23,22 @@ public static class GiteaEndpoints
return app;
}
private static async Task<IResult> GetRepo(GiteaService svc, CancellationToken ct)
private static async Task<IResult> GetRepo(GiteaService svc, string? repo, CancellationToken ct)
{
var repo = await svc.GetRepoAsync(ct);
return repo is null ? Results.StatusCode(503) : Results.Ok(repo);
var result = await svc.GetRepoAsync(repo, ct);
return result is null ? Results.StatusCode(503) : Results.Ok(result);
}
private static async Task<IResult> ListBranches(GiteaService svc, CancellationToken ct) =>
Results.Ok(await svc.ListBranchesAsync(ct));
private static async Task<IResult> ListBranches(GiteaService svc, string? repo, CancellationToken ct)
{
// repo=all returns branches from all registered repos, each tagged with repoKey
if (repo == "all")
{
var all = await svc.ListAllBranchesAsync(ct);
return Results.Ok(all.Select(x => new { repoKey = x.RepoKey, x.Branch.Name, x.Branch.CommitSha, x.Branch.Protected }));
}
return Results.Ok(await svc.ListBranchesAsync(repo, ct));
}
private static async Task<IResult> CreateBranch(
CreateBranchRequest req, GiteaService svc, CancellationToken ct)
@@ -40,40 +48,40 @@ public static class GiteaEndpoints
}
private static async Task<IResult> ListPulls(
GiteaService svc, string state = "open", CancellationToken ct = default) =>
Results.Ok(await svc.ListPullRequestsAsync(state, ct));
GiteaService svc, string state = "open", string? repo = null, CancellationToken ct = default) =>
Results.Ok(await svc.ListPullRequestsAsync(state, repo, ct));
private static async Task<IResult> GetPull(
long number, GiteaService svc, CancellationToken ct)
long number, GiteaService svc, string? repo = null, CancellationToken ct = default)
{
var pr = await svc.GetPullRequestAsync(number, ct);
var pr = await svc.GetPullRequestAsync(number, repo, ct);
return pr is null ? Results.NotFound() : Results.Ok(pr);
}
private static async Task<IResult> CreatePull(
CreatePullRequestRequest req, GiteaService svc, CancellationToken ct)
CreatePullRequestRequest req, GiteaService svc, string? repo = null, CancellationToken ct = default)
{
var pr = await svc.CreatePullRequestAsync(req, ct);
var pr = await svc.CreatePullRequestAsync(req, repo, ct);
return pr is null ? Results.BadRequest("Failed to create PR in Gitea.") : Results.Ok(pr);
}
private static async Task<IResult> ListTags(GiteaService svc, CancellationToken ct) =>
Results.Ok(await svc.ListTagsAsync(ct));
private static async Task<IResult> ListTags(GiteaService svc, string? repo = null, CancellationToken ct = default) =>
Results.Ok(await svc.ListTagsAsync(repo, ct));
private static async Task<IResult> CreateTag(
CreateTagRequest req, GiteaService svc, CancellationToken ct)
CreateTagRequest req, GiteaService svc, string? repo = null, CancellationToken ct = default)
{
var tag = await svc.CreateTagAsync(req, ct);
var tag = await svc.CreateTagAsync(req, repo, ct);
return tag is null ? Results.BadRequest("Failed to create tag in Gitea.") : Results.Ok(tag);
}
private static async Task<IResult> ListWebhooks(GiteaService svc, CancellationToken ct) =>
Results.Ok(await svc.ListWebhooksAsync(ct));
private static async Task<IResult> ListWebhooks(GiteaService svc, string? repo = null, CancellationToken ct = default) =>
Results.Ok(await svc.ListWebhooksAsync(repo, ct));
private static async Task<IResult> RegisterWebhook(
CreateWebhookRequest req, GiteaService svc, CancellationToken ct)
CreateWebhookRequest req, GiteaService svc, string? repo = null, CancellationToken ct = default)
{
var hook = await svc.RegisterWebhookAsync(req, ct);
var hook = await svc.RegisterWebhookAsync(req, repo, ct);
return hook is null ? Results.BadRequest("Failed to register webhook in Gitea.") : Results.Ok(hook);
}
}