using System; using System.Collections.Generic; using System.Text.Json; using System.Text.Json.Serialization; namespace SharedLibraryCore.Helpers; /// /// JSON converter for the build number /// public class BuildNumberJsonConverter : JsonConverter { public override BuildNumber Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { var stringValue = reader.GetString(); return BuildNumber.Parse(stringValue); } public override void Write(Utf8JsonWriter writer, BuildNumber value, JsonSerializerOptions options) { writer.WriteStringValue(value.ToString()); } } public class GameArrayJsonConverter : JsonConverter { public override Server.Game[] Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { List games = []; while (reader.Read()) { if (reader.TokenType == JsonTokenType.EndArray) { break; } var gameString = reader.GetString(); var game = Enum.Parse(gameString); games.Add(game); } return games.ToArray(); } public override void Write(Utf8JsonWriter writer, Server.Game[] value, JsonSerializerOptions options) { writer.WriteStartArray(); foreach (var game in value) { writer.WriteStringValue(game.ToString()); } writer.WriteEndArray(); } }