Forge
csharp3407750f
1using AgentForge.Abstractions;
2using AgentForge.Contracts;
3using AgentForge.Plugin.Sdk;
4using AgentForge.Services;
5using Microsoft.AspNetCore.Builder;
6using Microsoft.AspNetCore.Http;
7
8namespace AgentForge.Plugin.Org.Import.GitHub;
9
10internal static class ForgeOrgImportGitHubEndpoints
11{
12 internal static void Map(WebApplication app)
13 {
14 app.MapPost("/api/v1/orgs/{orgSlug}/import/github/members", ImportMembers);
15 }
16
17 private static async Task<IResult> ImportMembers(
18 string orgSlug,
19 ImportGitHubOrgMembersRequest request,
20 ForgeOrgImporterRegistry registry,
21 HttpContext context,
22 ForgeRepoAccessService access,
23 CancellationToken cancellationToken)
24 {
25 access.EnsureHostAdmin(access.Resolve(context));
26 if (!registry.TryGet("github", out var importer) || importer is null)
27 return Results.Json(new { detail = "Org importer not loaded for source 'github'." }, statusCode: 501);
28
29 var mapped = new ForgeOrgImportRequest(
30 orgSlug,
31 request.ExternalOrg,
32 request.DryRun,
33 request.DefaultRole ?? "member");
34 var response = await importer.ImportMembersAsync(mapped, cancellationToken).ConfigureAwait(false);
35 return Results.Ok(response);
36 }
37}
38
View only · write via MCP/CIDE