Fixed JsonParsing of NotifcationConnector and LibraryConnector with GlobalBase
This commit is contained in:
parent
9f30e52713
commit
c0efbb22cc
@ -26,8 +26,8 @@ public abstract class GlobalBase
|
|||||||
{
|
{
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.settings = settings;
|
this.settings = settings;
|
||||||
this.notificationConnectors = settings.LoadNotificationConnectors();
|
this.notificationConnectors = settings.LoadNotificationConnectors(this);
|
||||||
this.libraryConnectors = settings.LoadLibraryConnectors();
|
this.libraryConnectors = settings.LoadLibraryConnectors(this);
|
||||||
this.cachedPublications = new();
|
this.cachedPublications = new();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,13 @@ namespace Tranga.LibraryConnectors;
|
|||||||
|
|
||||||
public class LibraryManagerJsonConverter : JsonConverter
|
public class LibraryManagerJsonConverter : JsonConverter
|
||||||
{
|
{
|
||||||
|
private GlobalBase _clone;
|
||||||
|
|
||||||
|
internal LibraryManagerJsonConverter(GlobalBase clone)
|
||||||
|
{
|
||||||
|
this._clone = clone;
|
||||||
|
}
|
||||||
|
|
||||||
public override bool CanConvert(Type objectType)
|
public override bool CanConvert(Type objectType)
|
||||||
{
|
{
|
||||||
return (objectType == typeof(LibraryConnector));
|
return (objectType == typeof(LibraryConnector));
|
||||||
@ -13,11 +20,15 @@ public class LibraryManagerJsonConverter : JsonConverter
|
|||||||
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);
|
JObject jo = JObject.Load(reader);
|
||||||
if (jo["libraryType"]!.Value<Int64>() == (Int64)LibraryConnector.LibraryType.Komga)
|
if (jo["libraryType"]!.Value<byte>() == (byte)LibraryConnector.LibraryType.Komga)
|
||||||
return jo.ToObject<Komga>(serializer)!;
|
return new Komga(this._clone,
|
||||||
|
jo.GetValue("baseUrl")!.Value<string>()!,
|
||||||
|
jo.GetValue("auth")!.Value<string>()!);
|
||||||
|
|
||||||
if (jo["libraryType"]!.Value<Int64>() == (Int64)LibraryConnector.LibraryType.Kavita)
|
if (jo["libraryType"]!.Value<byte>() == (byte)LibraryConnector.LibraryType.Kavita)
|
||||||
return jo.ToObject<Kavita>(serializer)!;
|
return new Kavita(this._clone,
|
||||||
|
jo.GetValue("baseUrl")!.Value<string>()!,
|
||||||
|
jo.GetValue("auth")!.Value<string>()!);
|
||||||
|
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,13 @@ namespace Tranga.NotificationConnectors;
|
|||||||
|
|
||||||
public class NotificationManagerJsonConverter : JsonConverter
|
public class NotificationManagerJsonConverter : JsonConverter
|
||||||
{
|
{
|
||||||
|
private GlobalBase _clone;
|
||||||
|
|
||||||
|
public NotificationManagerJsonConverter(GlobalBase clone)
|
||||||
|
{
|
||||||
|
this._clone = clone;
|
||||||
|
}
|
||||||
|
|
||||||
public override bool CanConvert(Type objectType)
|
public override bool CanConvert(Type objectType)
|
||||||
{
|
{
|
||||||
return (objectType == typeof(NotificationConnector));
|
return (objectType == typeof(NotificationConnector));
|
||||||
@ -15,9 +22,10 @@ public class NotificationManagerJsonConverter : JsonConverter
|
|||||||
{
|
{
|
||||||
JObject jo = JObject.Load(reader);
|
JObject jo = JObject.Load(reader);
|
||||||
if (jo["notificationManagerType"]!.Value<byte>() == (byte)NotificationConnector.NotificationManagerType.Gotify)
|
if (jo["notificationManagerType"]!.Value<byte>() == (byte)NotificationConnector.NotificationManagerType.Gotify)
|
||||||
return jo.ToObject<Gotify>(serializer)!;
|
return new Gotify(this._clone, jo.GetValue("endpoint")!.Value<string>()!, jo.GetValue("appToken")!.Value<string>()!);
|
||||||
else if (jo["notificationManagerType"]!.Value<byte>() == (byte)NotificationConnector.NotificationManagerType.LunaSea)
|
else if (jo["notificationManagerType"]!.Value<byte>() ==
|
||||||
return jo.ToObject<LunaSea>(serializer)!;
|
(byte)NotificationConnector.NotificationManagerType.LunaSea)
|
||||||
|
return new LunaSea(this._clone, jo.GetValue("id")!.Value<string>()!);
|
||||||
|
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ public class TrangaSettings
|
|||||||
UpdateDownloadLocation(this.downloadLocation!, false);
|
UpdateDownloadLocation(this.downloadLocation!, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public HashSet<LibraryConnector> LoadLibraryConnectors()
|
public HashSet<LibraryConnector> LoadLibraryConnectors(GlobalBase clone)
|
||||||
{
|
{
|
||||||
if (!File.Exists(libraryConnectorsFilePath))
|
if (!File.Exists(libraryConnectorsFilePath))
|
||||||
return new HashSet<LibraryConnector>();
|
return new HashSet<LibraryConnector>();
|
||||||
@ -59,21 +59,21 @@ public class TrangaSettings
|
|||||||
{
|
{
|
||||||
Converters =
|
Converters =
|
||||||
{
|
{
|
||||||
new LibraryManagerJsonConverter()
|
new LibraryManagerJsonConverter(clone)
|
||||||
}
|
}
|
||||||
})!;
|
})!;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HashSet<NotificationConnector> LoadNotificationConnectors()
|
public HashSet<NotificationConnector> LoadNotificationConnectors(GlobalBase clone)
|
||||||
{
|
{
|
||||||
if (!File.Exists(notificationConnectorsFilePath))
|
if (!File.Exists(notificationConnectorsFilePath))
|
||||||
return new HashSet<NotificationConnector>();
|
return new HashSet<NotificationConnector>();
|
||||||
return JsonConvert.DeserializeObject<HashSet<NotificationConnector>>(File.ReadAllText(libraryConnectorsFilePath),
|
return JsonConvert.DeserializeObject<HashSet<NotificationConnector>>(File.ReadAllText(notificationConnectorsFilePath),
|
||||||
new JsonSerializerSettings()
|
new JsonSerializerSettings()
|
||||||
{
|
{
|
||||||
Converters =
|
Converters =
|
||||||
{
|
{
|
||||||
new NotificationManagerJsonConverter()
|
new NotificationManagerJsonConverter(clone)
|
||||||
}
|
}
|
||||||
})!;
|
})!;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user