Browse Source

Added ExcludeNull support

voice-allocs
RogueException 7 years ago
parent
commit
fed2e94517
20 changed files with 225 additions and 119 deletions
  1. +11
    -6
      src/Discord.Net.Rest/Serialization/JsonConverters/EntityOrIdPropertyConverter.cs
  2. +2
    -2
      src/Discord.Net.Rest/Serialization/JsonConverters/ImagePropertyConverter.cs
  3. +9
    -4
      src/Discord.Net.Rest/Serialization/JsonConverters/Int53PropertyConverter.cs
  4. +4
    -4
      src/Discord.Net.Rest/Serialization/JsonConverters/OptionalPropertyConverter.cs
  5. +9
    -4
      src/Discord.Net.Rest/Serialization/JsonConverters/UInt53PropertyConverter.cs
  6. +9
    -6
      src/Discord.Net.Serialization/Json/Converters/Collections.cs
  7. +11
    -6
      src/Discord.Net.Serialization/Json/Converters/Nullable.cs
  8. +18
    -8
      src/Discord.Net.Serialization/Json/Converters/Primitives.DateTime.cs
  9. +2
    -2
      src/Discord.Net.Serialization/Json/Converters/Primitives.Enum.cs
  10. +27
    -12
      src/Discord.Net.Serialization/Json/Converters/Primitives.Float.cs
  11. +18
    -8
      src/Discord.Net.Serialization/Json/Converters/Primitives.Other.cs
  12. +36
    -16
      src/Discord.Net.Serialization/Json/Converters/Primitives.Signed.cs
  13. +18
    -8
      src/Discord.Net.Serialization/Json/Converters/Primitives.String.cs
  14. +36
    -16
      src/Discord.Net.Serialization/Json/Converters/Primitives.Unsigned.cs
  15. +2
    -2
      src/Discord.Net.Serialization/Json/IJsonPropertyConverter.cs
  16. +1
    -5
      src/Discord.Net.Serialization/Json/JsonFormat.cs
  17. +4
    -2
      src/Discord.Net.Serialization/Json/JsonPropertyMap.cs
  18. +2
    -2
      src/Discord.Net.Serialization/ModelPropertyAttribute.cs
  19. +4
    -4
      src/Discord.Net.Serialization/PropertyMap.cs
  20. +2
    -2
      src/Discord.Net.WebSocket/API/SocketFrame.cs

+ 11
- 6
src/Discord.Net.Rest/Serialization/JsonConverters/EntityOrIdPropertyConverter.cs View File

@@ -12,21 +12,26 @@ namespace Discord.Serialization.Json.Converters
_innerConverter = innerConverter;
}

public EntityOrId<T> Read(JsonReader reader, bool read = true)
public EntityOrId<T> Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType == JsonValueType.Number)
return new EntityOrId<T>(reader.ParseUInt64());
return new EntityOrId<T>(_innerConverter.Read(reader));
return new EntityOrId<T>(_innerConverter.Read(map, reader, false));
}

public void Write(JsonWriter writer, EntityOrId<T> value)
public void Write(PropertyMap map, JsonWriter writer, EntityOrId<T> value, bool isTopLevel)
{
if (value.Object != null)
_innerConverter.Write(writer, value.Object);
_innerConverter.Write(map, writer, value.Object, isTopLevel);
else
writer.WriteValue(value.Id);
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value.Id);
else
writer.WriteValue(value.Id);
}
}
}
}

+ 2
- 2
src/Discord.Net.Rest/Serialization/JsonConverters/ImagePropertyConverter.cs View File

@@ -4,9 +4,9 @@ namespace Discord.Serialization.Json.Converters
{
internal class ImagePropertyConverter : IJsonPropertyConverter<API.Image>
{
public API.Image Read(JsonReader reader, bool read = true)
public API.Image Read(PropertyMap map, JsonReader reader, bool isTopLevel)
=> throw new System.NotImplementedException();
public void Write(JsonWriter writer, API.Image value)
public void Write(PropertyMap map, JsonWriter writer, API.Image value, bool isTopLevel)
=> throw new System.NotImplementedException();
}
}

+ 9
- 4
src/Discord.Net.Rest/Serialization/JsonConverters/Int53PropertyConverter.cs View File

@@ -4,15 +4,20 @@ namespace Discord.Serialization.Json.Converters
{
internal class Int53PropertyConverter : IJsonPropertyConverter<long>
{
public long Read(JsonReader reader, bool read = true)
public long Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.Number)
throw new SerializationException("Bad input, expected Number");
return reader.ParseInt64();
}
public void Write(JsonWriter writer, long value)
=> writer.WriteValue(value);
public void Write(PropertyMap map, JsonWriter writer, long value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
else
writer.WriteValue(value.ToString());
}
}
}

+ 4
- 4
src/Discord.Net.Rest/Serialization/JsonConverters/OptionalPropertyConverter.cs View File

@@ -11,13 +11,13 @@ namespace Discord.Serialization.Json.Converters
_innerConverter = innerConverter;
}

public Optional<T> Read(JsonReader reader, bool read = true)
=> new Optional<T>(_innerConverter.Read(reader, read));
public Optional<T> Read(PropertyMap map, JsonReader reader, bool isTopLevel)
=> new Optional<T>(_innerConverter.Read(map, reader, isTopLevel));

public void Write(JsonWriter writer, Optional<T> value)
public void Write(PropertyMap map, JsonWriter writer, Optional<T> value, bool isTopLevel)
{
if (value.IsSpecified)
_innerConverter.Write(writer, value.Value);
_innerConverter.Write(map, writer, value.Value, isTopLevel);
}
}
}

+ 9
- 4
src/Discord.Net.Rest/Serialization/JsonConverters/UInt53PropertyConverter.cs View File

@@ -4,15 +4,20 @@ namespace Discord.Serialization.Json.Converters
{
internal class UInt53PropertyConverter : IJsonPropertyConverter<ulong>
{
public ulong Read(JsonReader reader, bool read = true)
public ulong Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.Number)
throw new SerializationException("Bad input, expected Number");
return reader.ParseUInt64();
}
public void Write(JsonWriter writer, ulong value)
=> writer.WriteValue(value);
public void Write(PropertyMap map, JsonWriter writer, ulong value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
else
writer.WriteValue(value.ToString());
}
}
}

+ 9
- 6
src/Discord.Net.Serialization/Json/Converters/Collections.cs View File

@@ -12,22 +12,25 @@ namespace Discord.Serialization.Json.Converters
_innerConverter = innerConverter;
}

public List<T> Read(JsonReader reader, bool read = true)
public List<T> Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if ((read && !reader.Read()) || reader.TokenType != JsonTokenType.StartArray)
if ((isTopLevel && !reader.Read()) || reader.TokenType != JsonTokenType.StartArray)
throw new SerializationException("Bad input, expected StartArray");

var list = new List<T>();
while (reader.Read() && reader.TokenType != JsonTokenType.EndArray)
list.Add(_innerConverter.Read(reader));
list.Add(_innerConverter.Read(map, reader, false));
return list;
}

public void Write(JsonWriter writer, List<T> value)
public void Write(PropertyMap map, JsonWriter writer, List<T> value, bool isTopLevel)
{
writer.WriteArrayStart();
if (isTopLevel)
writer.WriteArrayStart(map.Key);
else
writer.WriteArrayStart();
for (int i = 0; i < value.Count; i++)
_innerConverter.Write(writer, value[i]);
_innerConverter.Write(map, writer, value[i], false);
writer.WriteArrayEnd();
}
}


+ 11
- 6
src/Discord.Net.Serialization/Json/Converters/Nullable.cs View File

@@ -12,21 +12,26 @@ namespace Discord.Serialization.Json.Converters
_innerConverter = innerConverter;
}

public T? Read(JsonReader reader, bool read = true)
public T? Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType == JsonValueType.Null)
return null;
return _innerConverter.Read(reader, false);
return _innerConverter.Read(map, reader, false);
}

public void Write(JsonWriter writer, T? value)
public void Write(PropertyMap map, JsonWriter writer, T? value, bool isTopLevel)
{
if (value.HasValue)
_innerConverter.Write(writer, value.Value);
_innerConverter.Write(map, writer, value.Value, isTopLevel);
else
writer.WriteNull();
{
if (isTopLevel)
writer.WriteAttributeNull(map.Key);
else
writer.WriteNull();
}
}
}
}

+ 18
- 8
src/Discord.Net.Serialization/Json/Converters/Primitives.DateTime.cs View File

@@ -5,29 +5,39 @@ namespace Discord.Serialization.Json.Converters
{
internal class DateTimePropertyConverter : IJsonPropertyConverter<DateTime>
{
public DateTime Read(JsonReader reader, bool read = true)
public DateTime Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.String)
throw new SerializationException("Bad input, expected String");
return reader.ParseDateTime();
}
public void Write(JsonWriter writer, DateTime value)
=> writer.WriteValue(value);
public void Write(PropertyMap map, JsonWriter writer, DateTime value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
else
writer.WriteValue(value);
}
}

internal class DateTimeOffsetPropertyConverter : IJsonPropertyConverter<DateTimeOffset>
{
public DateTimeOffset Read(JsonReader reader, bool read = true)
public DateTimeOffset Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.String)
throw new SerializationException("Bad input, expected String");
return reader.ParseDateTimeOffset();
}
public void Write(JsonWriter writer, DateTimeOffset value)
=> writer.WriteValue(value);
public void Write(PropertyMap map, JsonWriter writer, DateTimeOffset value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
else
writer.WriteValue(value);
}
}
}

+ 2
- 2
src/Discord.Net.Serialization/Json/Converters/Primitives.Enum.cs View File

@@ -4,9 +4,9 @@ namespace Discord.Serialization.Json.Converters
{
internal class EnumPropertyConverter<T> : IJsonPropertyConverter<T>
{
public T Read(JsonReader reader, bool read = true)
public T Read(PropertyMap map, JsonReader reader, bool isTopLevel)
=> throw new System.NotImplementedException();
public void Write(JsonWriter writer, T value)
public void Write(PropertyMap map, JsonWriter writer, T value, bool isTopLevel)
=> throw new System.NotImplementedException();
}
}

+ 27
- 12
src/Discord.Net.Serialization/Json/Converters/Primitives.Float.cs View File

@@ -4,43 +4,58 @@ namespace Discord.Serialization.Json.Converters
{
internal class SinglePropertyConverter : IJsonPropertyConverter<float>
{
public float Read(JsonReader reader, bool read = true)
public float Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.Number)
throw new SerializationException("Bad input, expected Number");
return reader.ParseSingle();
}
public void Write(JsonWriter writer, float value)
=> writer.WriteValue(value.ToString());
public void Write(PropertyMap map, JsonWriter writer, float value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value.ToString());
else
writer.WriteValue(value.ToString());
}
}

internal class DoublePropertyConverter : IJsonPropertyConverter<double>
{
public double Read(JsonReader reader, bool read = true)
public double Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.Number)
throw new SerializationException("Bad input, expected Number");
return reader.ParseDouble();
}
public void Write(JsonWriter writer, double value)
=> writer.WriteValue(value.ToString());
public void Write(PropertyMap map, JsonWriter writer, double value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value.ToString());
else
writer.WriteValue(value.ToString());
}
}

internal class DecimalPropertyConverter : IJsonPropertyConverter<decimal>
{
public decimal Read(JsonReader reader, bool read = true)
public decimal Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.Number)
throw new SerializationException("Bad input, expected Number");
return reader.ParseDecimal();
}
public void Write(JsonWriter writer, decimal value)
=> writer.WriteValue(value.ToString());
public void Write(PropertyMap map, JsonWriter writer, decimal value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value.ToString());
else
writer.WriteValue(value.ToString());
}
}
}

+ 18
- 8
src/Discord.Net.Serialization/Json/Converters/Primitives.Other.cs View File

@@ -5,9 +5,9 @@ namespace Discord.Serialization.Json.Converters
{
internal class BooleanPropertyConverter : IJsonPropertyConverter<bool>
{
public bool Read(JsonReader reader, bool read = true)
public bool Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
switch (reader.ValueType)
{
@@ -16,21 +16,31 @@ namespace Discord.Serialization.Json.Converters
default: throw new SerializationException("Bad input, expected False or True");
}
}
public void Write(JsonWriter writer, bool value)
=> writer.WriteValue(value);
public void Write(PropertyMap map, JsonWriter writer, bool value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
else
writer.WriteValue(value);
}
}

internal class GuidPropertyConverter : IJsonPropertyConverter<Guid>
{
public Guid Read(JsonReader reader, bool read = true)
public Guid Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.String)
throw new SerializationException("Bad input, expected String");
return Guid.Parse(reader.ParseString());
}
public void Write(JsonWriter writer, Guid value)
=> writer.WriteValue(value);
public void Write(PropertyMap map, JsonWriter writer, Guid value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value.ToString());
else
writer.WriteValue(value.ToString());
}
}
}

+ 36
- 16
src/Discord.Net.Serialization/Json/Converters/Primitives.Signed.cs View File

@@ -4,57 +4,77 @@ namespace Discord.Serialization.Json.Converters
{
internal class Int8PropertyConverter : IJsonPropertyConverter<sbyte>
{
public sbyte Read(JsonReader reader, bool read = true)
public sbyte Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.Number)
throw new SerializationException("Bad input, expected Number");
return reader.ParseInt8();
}
public void Write(JsonWriter writer, sbyte value)
=> writer.WriteValue(value);
public void Write(PropertyMap map, JsonWriter writer, sbyte value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
else
writer.WriteValue(value);
}
}

internal class Int16PropertyConverter : IJsonPropertyConverter<short>
{
public short Read(JsonReader reader, bool read = true)
public short Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.Number)
throw new SerializationException("Bad input, expected Number");
return reader.ParseInt16();
}
public void Write(JsonWriter writer, short value)
=> writer.WriteValue(value);
public void Write(PropertyMap map, JsonWriter writer, short value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
else
writer.WriteValue(value);
}
}

internal class Int32PropertyConverter : IJsonPropertyConverter<int>
{
public int Read(JsonReader reader, bool read = true)
public int Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.Number)
throw new SerializationException("Bad input, expected Number");
return reader.ParseInt32();
}
public void Write(JsonWriter writer, int value)
=> writer.WriteValue(value);
public void Write(PropertyMap map, JsonWriter writer, int value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
else
writer.WriteValue(value);
}
}

internal class Int64PropertyConverter : IJsonPropertyConverter<long>
{
public long Read(JsonReader reader, bool read = true)
public long Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.String)
throw new SerializationException("Bad input, expected String");
return reader.ParseInt64();
}
public void Write(JsonWriter writer, long value)
=> writer.WriteValue(value.ToString());
public void Write(PropertyMap map, JsonWriter writer, long value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value.ToString());
else
writer.WriteValue(value.ToString());
}
}
}

+ 18
- 8
src/Discord.Net.Serialization/Json/Converters/Primitives.String.cs View File

@@ -4,29 +4,39 @@ namespace Discord.Serialization.Json.Converters
{
internal class CharPropertyConverter : IJsonPropertyConverter<char>
{
public char Read(JsonReader reader, bool read = true)
public char Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.String)
throw new SerializationException("Bad input, expected String");
return reader.ParseChar();
}
public void Write(JsonWriter writer, char value)
=> writer.WriteValue(value);
public void Write(PropertyMap map, JsonWriter writer, char value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
else
writer.WriteValue(value.ToString());
}
}

internal class StringPropertyConverter : IJsonPropertyConverter<string>
{
public string Read(JsonReader reader, bool read = true)
public string Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.String)
throw new SerializationException("Bad input, expected String");
return reader.ParseString();
}
public void Write(JsonWriter writer, string value)
=> writer.WriteValue(value);
public void Write(PropertyMap map, JsonWriter writer, string value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
else
writer.WriteValue(value);
}
}
}

+ 36
- 16
src/Discord.Net.Serialization/Json/Converters/Primitives.Unsigned.cs View File

@@ -4,57 +4,77 @@ namespace Discord.Serialization.Json.Converters
{
internal class UInt8PropertyConverter : IJsonPropertyConverter<byte>
{
public byte Read(JsonReader reader, bool read = true)
public byte Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.Number)
throw new SerializationException("Bad input, expected Number");
return reader.ParseUInt8();
}
public void Write(JsonWriter writer, byte value)
=> writer.WriteValue(value);
public void Write(PropertyMap map, JsonWriter writer, byte value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
else
writer.WriteValue(value);
}
}

internal class UInt16PropertyConverter : IJsonPropertyConverter<ushort>
{
public ushort Read(JsonReader reader, bool read = true)
public ushort Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.Number)
throw new SerializationException("Bad input, expected Number");
return reader.ParseUInt16();
}
public void Write(JsonWriter writer, ushort value)
=> writer.WriteValue(value);
public void Write(PropertyMap map, JsonWriter writer, ushort value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
else
writer.WriteValue(value);
}
}

internal class UInt32PropertyConverter : IJsonPropertyConverter<uint>
{
public uint Read(JsonReader reader, bool read = true)
public uint Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.Number)
throw new SerializationException("Bad input, expected Number");
return reader.ParseUInt32();
}
public void Write(JsonWriter writer, uint value)
=> writer.WriteValue(value);
public void Write(PropertyMap map, JsonWriter writer, uint value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
else
writer.WriteValue(value);
}
}

internal class UInt64PropertyConverter : IJsonPropertyConverter<ulong>
{
public ulong Read(JsonReader reader, bool read = true)
public ulong Read(PropertyMap map, JsonReader reader, bool isTopLevel)
{
if (read)
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.String)
throw new SerializationException("Bad input, expected String");
return reader.ParseUInt64();
}
public void Write(JsonWriter writer, ulong value)
=> writer.WriteValue(value.ToString());
public void Write(PropertyMap map, JsonWriter writer, ulong value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value.ToString());
else
writer.WriteValue(value.ToString());
}
}
}

+ 2
- 2
src/Discord.Net.Serialization/Json/IJsonPropertyConverter.cs View File

@@ -4,7 +4,7 @@ namespace Discord.Serialization.Json
{
public interface IJsonPropertyConverter<T>
{
T Read(JsonReader reader, bool read = true);
void Write(JsonWriter writer, T value);
T Read(PropertyMap map, JsonReader reader, bool isTopLevel);
void Write(PropertyMap map, JsonWriter writer, T value, bool isTopLevel);
}
}

+ 1
- 5
src/Discord.Net.Serialization/Json/JsonFormat.cs View File

@@ -92,11 +92,7 @@ namespace Discord.Serialization.Json

writer.WriteObjectStart();
for (int i = 0; i < map.Properties.Length; i++)
{
var property = map.Properties[i];
writer.WriteStartAttribute(property.Key);
(property as IJsonPropertyMap<TModel>).Write(model, writer);
}
(map.Properties[i] as IJsonPropertyMap<TModel>).Write(model, writer);
writer.WriteObjectEnd();
}
}


+ 4
- 2
src/Discord.Net.Serialization/Json/JsonPropertyMap.cs View File

@@ -22,11 +22,13 @@ namespace Discord.Serialization.Json
public void Write(TModel model, JsonWriter writer)
{
var value = _getFunc(model);
_converter.Write(writer, value);
if (value == null && ExcludeNull)
return;
_converter.Write(this, writer, value, true);
}
public void Read(TModel model, JsonReader reader)
{
var value = _converter.Read(reader);
var value = _converter.Read(this, reader, true);
_setFunc(model, value);
}
}


+ 2
- 2
src/Discord.Net.Serialization/ModelPropertyAttribute.cs View File

@@ -5,9 +5,9 @@ namespace Discord.Serialization
public class ModelPropertyAttribute : Attribute
{
public string Key { get; }
public bool IgnoreNull { get; set; }
public bool ExcludeNull { get; set; }

public ModelPropertyAttribute(string key)
public ModelPropertyAttribute(string key = null)
{
Key = key;
}


+ 4
- 4
src/Discord.Net.Serialization/PropertyMap.cs View File

@@ -5,14 +5,14 @@ namespace Discord.Serialization
public abstract class PropertyMap
{
public string Key { get; }
public bool ExcludeNull { get; }

public PropertyMap(PropertyInfo propInfo)
{
var jsonProperty = propInfo.GetCustomAttribute<ModelPropertyAttribute>();
if (jsonProperty != null)
Key = jsonProperty.Key;
else
Key = propInfo.Name;

Key = jsonProperty?.Key ?? propInfo.Name;
ExcludeNull = jsonProperty?.ExcludeNull ?? false;
}
}
}

+ 2
- 2
src/Discord.Net.WebSocket/API/SocketFrame.cs View File

@@ -8,9 +8,9 @@ namespace Discord.API
{
[ModelProperty("op")]
public int Operation { get; set; }
[ModelProperty("t", IgnoreNull = true)]
[ModelProperty("t", ExcludeNull = true)]
public string Type { get; set; }
[ModelProperty("s", IgnoreNull = true)]
[ModelProperty("s", ExcludeNull = true)]
public int? Sequence { get; set; }
[ModelProperty("d")]
public ReadOnlyBuffer<byte> Payload { get; set; }


Loading…
Cancel
Save