Use settings-file for API
Added API-call to list TaskTypes Working? CreateTask API-call Working? RemoveTask API-call
This commit is contained in:
parent
6c775d6e0c
commit
1cff93fbac
@ -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<TrangaTask>());
|
||||
|
||||
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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user