using System; using System.Text.Json; namespace Discord.Serialization.Json.Converters { public class BooleanPropertyConverter : JsonPropertyConverter { public override bool Read(PropertyMap map, object model, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); switch (reader.ValueType) { case JsonValueType.True: return true; case JsonValueType.False: return false; default: throw new SerializationException("Bad input, expected False or True"); } } public override void Write(PropertyMap map, object model, ref JsonWriter writer, bool value, string key) { if (key != null) writer.WriteAttribute(key, value); else writer.WriteValue(value); } } public class GuidPropertyConverter : JsonPropertyConverter { public override Guid Read(PropertyMap map, object model, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); if (reader.ValueType != JsonValueType.String) throw new SerializationException("Bad input, expected String"); return reader.ParseGuid(); } public override void Write(PropertyMap map, object model, ref JsonWriter writer, Guid value, string key) { if (key != null) writer.WriteAttribute(key, value.ToString()); else writer.WriteValue(value.ToString()); } } }