using System.Text.Json; using Tranga; TaskManager taskManager = new (Directory.GetCurrentDirectory()); var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.MapGet("/GetConnectors", () => JsonSerializer.Serialize(taskManager.GetAvailableConnectors().Values.ToArray())); app.MapGet("/GetPublications", (string connectorName, string? publicationName) => { Connector connector = taskManager.GetConnector(connectorName); Publication[] publications; if (publicationName is not null) publications = connector.GetPublications(publicationName); else publications = connector.GetPublications(); return JsonSerializer.Serialize(publications); }); app.MapGet("/ListTasks", () => JsonSerializer.Serialize(taskManager.GetAllTasks())); app.MapGet("/CreateTask", (TrangaTask.Task task, string? connectorName, string? publicationName, TimeSpan reoccurrence, string? language) => { switch (task) { case TrangaTask.Task.UpdateKomgaLibrary: taskManager.AddTask(TrangaTask.Task.UpdateKomgaLibrary, null, null, reoccurrence); break; case TrangaTask.Task.DownloadNewChapters: try { Connector connector = taskManager.GetConnector(connectorName); Publication[] publications; if (publicationName is not null) publications = connector.GetPublications(publicationName); else publications = connector.GetPublications(); Publication? publication = publications.FirstOrDefault(pub => pub.downloadUrl == publicationName); if (publication is null) JsonSerializer.Serialize($"Publication {publicationName} is unknown."); taskManager.AddTask(TrangaTask.Task.DownloadNewChapters, connectorName, publication, reoccurrence, language ?? ""); return JsonSerializer.Serialize("Success"); } catch (Exception e) { return JsonSerializer.Serialize(e.Message); } default: return JsonSerializer.Serialize("Not Implemented"); } return JsonSerializer.Serialize("Not Implemented"); }); app.MapGet("/RemoveTask", (TrangaTask.Task task, string? connectorName, string? publicationName) => { switch (task) { case TrangaTask.Task.UpdateKomgaLibrary: taskManager.RemoveTask(TrangaTask.Task.UpdateKomgaLibrary, null, null); return JsonSerializer.Serialize("Success"); break; case TrangaTask.Task.DownloadNewChapters: Publication? publication = taskManager.GetAllPublications().FirstOrDefault(pub => pub.downloadUrl == publicationName); if (publication is null) JsonSerializer.Serialize($"Publication {publicationName} is unknown."); taskManager.RemoveTask(TrangaTask.Task.DownloadNewChapters, connectorName, publication); return JsonSerializer.Serialize("Success"); default: return JsonSerializer.Serialize("Not Implemented"); } }); app.Run();