using System.Text.Json; namespace Discord.Serialization.Json.Converters { internal class UInt8PropertyConverter : IJsonPropertyConverter { public byte Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); if (reader.ValueType != JsonValueType.Number && reader.ValueType != JsonValueType.String) throw new SerializationException("Bad input, expected Number or String"); return reader.ParseUInt8(); } public void Write(PropertyMap map, ref JsonWriter writer, byte value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value); else writer.WriteValue(value); } } internal class UInt16PropertyConverter : IJsonPropertyConverter { public ushort Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); if (reader.ValueType != JsonValueType.Number && reader.ValueType != JsonValueType.String) throw new SerializationException("Bad input, expected Number or String"); return reader.ParseUInt16(); } public void Write(PropertyMap map, ref JsonWriter writer, ushort value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value); else writer.WriteValue(value); } } internal class UInt32PropertyConverter : IJsonPropertyConverter { public uint Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); if (reader.ValueType != JsonValueType.Number && reader.ValueType != JsonValueType.String) throw new SerializationException("Bad input, expected Number or String"); return reader.ParseUInt32(); } public void Write(PropertyMap map, ref JsonWriter writer, uint value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value); else writer.WriteValue(value); } } internal class UInt64PropertyConverter : IJsonPropertyConverter { public ulong Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); if (reader.ValueType != JsonValueType.Number && reader.ValueType != JsonValueType.String) throw new SerializationException("Bad input, expected Number or String"); return reader.ParseUInt64(); } public void Write(PropertyMap map, ref JsonWriter writer, ulong value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value.ToString()); else writer.WriteValue(value.ToString()); } } }