Files
SPT-Server-Build/Libraries/SPTarkov.Server.Core/Utils/Json/Converters/BaseSptLoggerReferenceConverter.cs
T

42 lines
1.3 KiB
C#

using System.Text.Json;
using System.Text.Json.Serialization;
using SPTarkov.Server.Core.Utils.Logger;
namespace SPTarkov.Server.Core.Utils.Json.Converters;
public class BaseSptLoggerReferenceConverter : JsonConverter<BaseSptLoggerReference>
{
public override BaseSptLoggerReference? Read(
ref Utf8JsonReader reader,
Type typeToConvert,
JsonSerializerOptions options
)
{
using (var jsonDocument = JsonDocument.ParseValue(ref reader))
{
if (!jsonDocument.RootElement.TryGetProperty("type", out var typeElement))
{
throw new Exception("One of the loggers doesnt have a type property defined.");
}
switch (typeElement.GetString())
{
case "File":
return jsonDocument.Deserialize<FileSptLoggerReference>(options);
case "Console":
return jsonDocument.Deserialize<ConsoleSptLoggerReference>(options);
default:
throw new Exception(
$"The logger type '{typeElement.GetString()}' does not exist."
);
}
}
}
public override void Write(
Utf8JsonWriter writer,
BaseSptLoggerReference value,
JsonSerializerOptions options
) { }
}