diff --git a/Tranga/TrangaTask.cs b/Tranga/TrangaTask.cs index 6c90544..6dbf0d1 100644 --- a/Tranga/TrangaTask.cs +++ b/Tranga/TrangaTask.cs @@ -12,6 +12,7 @@ namespace Tranga; /// Stores information on Task, when implementing new Tasks also update the serializer /// [JsonDerivedType(typeof(MonitorPublicationTask), 2)] +[JsonDerivedType(typeof(UpdateLibrariesTask), 3)] [JsonDerivedType(typeof(DownloadChapterTask), 4)] public abstract class TrangaTask { @@ -130,19 +131,19 @@ public abstract class TrangaTask return objectType == typeof(TrangaTask); } - public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer) + public override object ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer) { JObject jo = JObject.Load(reader); if (jo["task"]!.Value() == (Int64)Task.MonitorPublication) return jo.ToObject(serializer)!; if (jo["task"]!.Value() == (Int64)Task.UpdateLibraries) - return null; + return jo.ToObject(serializer)!; if (jo["task"]!.Value() == (Int64)Task.DownloadChapter) return jo.ToObject(serializer)!; - throw new Exception($"Deserialization: Unknown type {objectType} for TrangaTask"); + throw new Exception(); } public override bool CanWrite => false; diff --git a/Tranga/TrangaTasks/UpdateLibrariesTask.cs b/Tranga/TrangaTasks/UpdateLibrariesTask.cs new file mode 100644 index 0000000..2ecf6f2 --- /dev/null +++ b/Tranga/TrangaTasks/UpdateLibrariesTask.cs @@ -0,0 +1,33 @@ +using System.Net; +using Logging; + +namespace Tranga.TrangaTasks; + +/// +/// LEGACY DEPRECATED +/// +public class UpdateLibrariesTask : TrangaTask +{ + public UpdateLibrariesTask(TimeSpan reoccurrence) : base(Task.UpdateLibraries, reoccurrence) + { + } + + protected override HttpStatusCode ExecuteTask(TaskManager taskManager, Logger? logger, CancellationToken? cancellationToken = null) + { + if (cancellationToken?.IsCancellationRequested ?? false) + return HttpStatusCode.RequestTimeout; + foreach(LibraryManager lm in taskManager.settings.libraryManagers) + lm.UpdateLibrary(); + return HttpStatusCode.OK; + } + + public override TrangaTask Clone() + { + return new UpdateLibrariesTask(this.reoccurrence); + } + + protected override double GetProgress() + { + return 1; + } +} \ No newline at end of file