using DiscordRPC.Converters; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace DiscordRPC.RPC.Payload { /// /// Used for Discord IPC Events /// internal class EventPayload : IPayload { /// /// The data the server sent too us /// [JsonProperty("data", NullValueHandling = NullValueHandling.Ignore)] public JObject Data { get; set; } /// /// The type of event the server sent /// [JsonProperty("evt"), JsonConverter(typeof(EnumSnakeCaseConverter))] public ServerEvent? Event { get; set; } /// /// Creates a payload with empty data /// public EventPayload() : base() { Data = null; } /// /// Creates a payload with empty data and a set nonce /// /// public EventPayload(long nonce) : base(nonce) { Data = null; } /// /// Gets the object stored within the Data /// /// /// public T GetObject() { if (Data == null) return default(T); return Data.ToObject(); } /// /// Converts the object into a human readable string /// /// public override string ToString() { return "Event " + base.ToString() + ", Event: " + (Event.HasValue ? Event.ToString() : "N/A"); } } }