diff --git a/src/Discord.Net/Entities/Messages/Direction.cs b/src/Discord.Net/Entities/Messages/Direction.cs index c849146ff..5d8d5e621 100644 --- a/src/Discord.Net/Entities/Messages/Direction.cs +++ b/src/Discord.Net/Entities/Messages/Direction.cs @@ -3,6 +3,7 @@ public enum Direction { Before, - After + After, + Around } } diff --git a/src/Discord.Net/Net/Converters/DirectionConverter.cs b/src/Discord.Net/Net/Converters/DirectionConverter.cs new file mode 100644 index 000000000..899bd880c --- /dev/null +++ b/src/Discord.Net/Net/Converters/DirectionConverter.cs @@ -0,0 +1,47 @@ +using Newtonsoft.Json; +using System; + +namespace Discord.Net.Converters +{ + public class DirectionConverter : JsonConverter + { + public static readonly DirectionConverter Instance = new DirectionConverter(); + + public override bool CanConvert(Type objectType) => true; + public override bool CanRead => true; + public override bool CanWrite => true; + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + switch ((string)reader.Value) + { + case "before": + return Direction.Before; + case "after": + return Direction.After; + case "around": + return Direction.Around; + default: + throw new JsonSerializationException("Unknown direction"); + } + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + switch ((Direction)value) + { + case Direction.Before: + writer.WriteValue("before"); + break; + case Direction.After: + writer.WriteValue("after"); + break; + case Direction.Around: + writer.WriteValue("around"); + break; + default: + throw new JsonSerializationException("Invalid direction"); + } + } + } +} diff --git a/src/Discord.Net/Net/Converters/DiscordContractResolver.cs b/src/Discord.Net/Net/Converters/DiscordContractResolver.cs index 256afe866..be22c9b20 100644 --- a/src/Discord.Net/Net/Converters/DiscordContractResolver.cs +++ b/src/Discord.Net/Net/Converters/DiscordContractResolver.cs @@ -43,6 +43,8 @@ namespace Discord.Net.Converters converter = PermissionTargetConverter.Instance; else if (type == typeof(UserStatus)) converter = UserStatusConverter.Instance; + else if (type == typeof(Direction)) + converter = DirectionConverter.Instance; //Entities if (typeInfo.ImplementedInterfaces.Any(x => x == typeof(IEntity)))