From e406ff4c5c172dbcb93ede75feeeee14a73e9b94 Mon Sep 17 00:00:00 2001 From: RogueException Date: Fri, 17 Jun 2016 22:13:20 -0300 Subject: [PATCH] Fixed direction parsing, added "around" direction --- src/Discord.Net/Entities/Messages/Direction.cs | 3 +- .../Net/Converters/DirectionConverter.cs | 47 ++++++++++++++++++++++ .../Net/Converters/DiscordContractResolver.cs | 2 + 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 src/Discord.Net/Net/Converters/DirectionConverter.cs 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)))