using System.Linq; using System.Threading.Tasks; using Gott.Services; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Routing; namespace Gott.Endpoints; public static class ModelsEndpoint { public static void MapModelsEndpoint(this IEndpointRouteBuilder app) { app.MapGet("/api/models/nvidia", HandleNvidiaModels); app.MapGet("/api/models/pollinations", HandlePollinationsModels); app.MapGet("/api/models/gemini", HandleGeminiModels); app.MapGet("/api/models/openai", HandleOpenAiModels); app.MapGet("/api/models/minimax", HandleMinimaxModels); app.MapGet("/api/models/glm", HandleGlmModels); app.MapPost("/api/models/refresh", HandleRefresh); } private static IResult HandleNvidiaModels(OpenAiService openAiService) { var models = openAiService.GetNvidiaModels() .Select(m => new { id = m.Id, displayName = m.DisplayName }) .ToList(); return Results.Json(new { models }); } private static IResult HandlePollinationsModels(OpenAiService openAiService) { var models = openAiService.GetPollinationsModels() .Select(m => new { id = m.Id, displayName = m.DisplayName }) .ToList(); return Results.Json(new { models }); } private static IResult HandleGeminiModels(OpenAiService openAiService) { var models = openAiService.GetGeminiModels() .Select(m => new { id = m.Id, displayName = m.DisplayName }) .ToList(); return Results.Json(new { models }); } private static IResult HandleOpenAiModels(OpenAiService openAiService) { var models = openAiService.GetOpenAiModels() .Select(m => new { id = m.Id, displayName = m.DisplayName }) .ToList(); return Results.Json(new { models }); } private static IResult HandleMinimaxModels(OpenAiService openAiService) { var models = openAiService.GetMinimaxModels() .Select(m => new { id = m.Id, displayName = m.DisplayName }) .ToList(); return Results.Json(new { models }); } private static IResult HandleGlmModels(OpenAiService openAiService) { var models = openAiService.GetGlmModels() .Select(m => new { id = m.Id, displayName = m.DisplayName }) .ToList(); return Results.Json(new { models }); } private static async Task HandleRefresh(OpenAiService openAiService) { await openAiService.RefreshModelsFromApis(); return Results.Json(new { success = true, message = "Modelle neu geladen und gecacht." }); } }