From 1cff93fbacc447c3357181c445fa8460134aacb0 Mon Sep 17 00:00:00 2001 From: glax Date: Sun, 21 May 2023 16:23:35 +0200 Subject: [PATCH] Use settings-file for API Added API-call to list TaskTypes Working? CreateTask API-call Working? RemoveTask API-call --- Tranga-API/Program.cs | 59 ++++++++++++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 17 deletions(-) diff --git a/Tranga-API/Program.cs b/Tranga-API/Program.cs index 7d4e186..ae36e7d 100644 --- a/Tranga-API/Program.cs +++ b/Tranga-API/Program.cs @@ -1,7 +1,27 @@ using System.Text.Json; using Tranga; +using Logging; + +string applicationFolderPath = Path.Join(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Tranga-API"); +string logsFolderPath = Path.Join(applicationFolderPath, "logs"); +string logFilePath = Path.Join(logsFolderPath, $"log-{DateTime.Now:dd-M-yyyy-HH-mm-ss}.txt"); +string settingsFilePath = Path.Join(applicationFolderPath, "data.json"); + +Console.WriteLine($"Logfile-Path: {logFilePath}"); +Console.WriteLine($"Settings-File-Path: {settingsFilePath}"); + +Logger logger = new(new[] { Logger.LoggerType.FileLogger }, null, null, logFilePath); + +logger.WriteLine("Tranga_API", "Loading Taskmanager."); + +TaskManager.SettingsData settings; +if (File.Exists(settingsFilePath)) + settings = TaskManager.LoadData(settingsFilePath); +else + settings = new TaskManager.SettingsData(Directory.GetCurrentDirectory(), settingsFilePath, null, new HashSet()); + +TaskManager taskManager = new (settings, logger); -TaskManager taskManager = new (Directory.GetCurrentDirectory()); var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); @@ -22,8 +42,14 @@ app.MapGet("/GetPublications", (string connectorName, string? publicationName) = app.MapGet("/ListTasks", () => JsonSerializer.Serialize(taskManager.GetAllTasks())); +app.MapGet("/TaskTypes", () => +{ + string[] availableTasks = Enum.GetNames(typeof(TrangaTask.Task)); + return JsonSerializer.Serialize(availableTasks); +}); + app.MapGet("/CreateTask", - (TrangaTask.Task task, string? connectorName, string? publicationName, TimeSpan reoccurrence, string? language) => + (TrangaTask.Task task, string? connectorName, string? publicationInternalId, TimeSpan reoccurrence, string? language) => { switch (task) { @@ -33,19 +59,18 @@ app.MapGet("/CreateTask", 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); + Publication? publication = taskManager.GetAllPublications() + .FirstOrDefault(pub => pub.internalId == publicationInternalId); + if (publication is null) - JsonSerializer.Serialize($"Publication {publicationName} is unknown."); - taskManager.AddTask(TrangaTask.Task.DownloadNewChapters, connectorName, publication, reoccurrence, language ?? ""); - return JsonSerializer.Serialize("Success"); + { + return JsonSerializer.Serialize($"Publication {publicationInternalId} is unknown."); + } + else + { + taskManager.AddTask(TrangaTask.Task.DownloadNewChapters, connectorName, publication, reoccurrence, language ?? ""); + return JsonSerializer.Serialize("Success"); + } } catch (Exception e) { @@ -58,7 +83,7 @@ app.MapGet("/CreateTask", return JsonSerializer.Serialize("Not Implemented"); }); -app.MapGet("/RemoveTask", (TrangaTask.Task task, string? connectorName, string? publicationName) => +app.MapGet("/RemoveTask", (TrangaTask.Task task, string? connectorName, string? publicationInternalId) => { switch (task) { @@ -66,9 +91,9 @@ app.MapGet("/RemoveTask", (TrangaTask.Task task, string? connectorName, string? taskManager.DeleteTask(TrangaTask.Task.UpdateKomgaLibrary, null, null); return JsonSerializer.Serialize("Success"); case TrangaTask.Task.DownloadNewChapters: - Publication? publication = taskManager.GetAllPublications().FirstOrDefault(pub => pub.downloadUrl == publicationName); + Publication? publication = taskManager.GetAllPublications().FirstOrDefault(pub => pub.internalId == publicationInternalId); if (publication is null) - JsonSerializer.Serialize($"Publication {publicationName} is unknown."); + JsonSerializer.Serialize($"Publication with id {publicationInternalId} is unknown."); taskManager.DeleteTask(TrangaTask.Task.DownloadNewChapters, connectorName, publication);