feat: move PKMessage JSON to PluralKit.Core

This commit is contained in:
spiral
2021-11-26 14:23:57 -05:00
parent ddd966ad58
commit a4a5f5c17a
8 changed files with 55 additions and 71 deletions

View File

@@ -71,21 +71,4 @@ namespace PluralKit.Core
return _db.QueryFirst<PKMessage?>(query);
}
}
public class PKMessage
{
public ulong Mid { get; set; }
public ulong? Guild { get; set; } // null value means "no data" (ie. from before this field being added)
public ulong Channel { get; set; }
public MemberId Member { get; set; }
public ulong Sender { get; set; }
public ulong? OriginalMid { get; set; }
}
public class FullMessage
{
public PKMessage Message;
public PKMember Member;
public PKSystem System;
}
}

View File

@@ -63,20 +63,6 @@ namespace PluralKit.Core
return new StringContent(JsonConvert.SerializeObject(o), Encoding.UTF8, "application/json");
}
public static JObject ToDispatchJson(this PKMessage msg, string memberRef)
{
var o = new JObject();
o.Add("timestamp", Instant.FromUnixTimeMilliseconds((long)(msg.Mid >> 22) + 1420070400000).FormatExport());
o.Add("id", msg.Mid.ToString());
o.Add("original", msg.OriginalMid.ToString());
o.Add("sender", msg.Sender.ToString());
o.Add("channel", msg.Channel.ToString());
o.Add("member", memberRef);
return o;
}
public static async Task<bool> ValidateUri(string url)
{
IPHostEntry host = null;

View File

@@ -139,11 +139,18 @@ namespace PluralKit.Core
var member = await repo.GetMember(newMessage.Member);
var fullMessage = new FullMessage
{
Message = newMessage,
Member = member,
System = system
};
var data = new UpdateDispatchData();
data.Event = DispatchEvent.CREATE_MESSAGE;
data.SigningToken = system.WebhookToken;
data.SystemId = system.Uuid.ToString();
data.EventData = newMessage.ToDispatchJson(member.Uuid.ToString());
data.EventData = fullMessage.ToJson(LookupContext.ByOwner, APIVersion.V2);
_logger.Debug("Dispatching webhook for message create (system {SystemId})", system.Id);
await DoPostRequest(system.Id, system.WebhookUrl, data.GetPayloadBody());

View File

@@ -0,0 +1,39 @@
using Newtonsoft.Json.Linq;
using NodaTime;
namespace PluralKit.Core
{
public class PKMessage
{
public ulong Mid { get; set; }
public ulong? Guild { get; set; } // null value means "no data" (ie. from before this field being added)
public ulong Channel { get; set; }
public MemberId Member { get; set; }
public ulong Sender { get; set; }
public ulong? OriginalMid { get; set; }
}
public class FullMessage
{
public PKMessage Message;
public PKMember Member;
public PKSystem System;
public JObject ToJson(LookupContext ctx, APIVersion v)
{
var o = new JObject();
o.Add("timestamp", Instant.FromUnixTimeMilliseconds((long)(this.Message.Mid >> 22) + 1420070400000).ToString());
o.Add("id", this.Message.Mid.ToString());
o.Add("original", this.Message.OriginalMid.ToString());
o.Add("sender", this.Message.Sender.ToString());
o.Add("channel", this.Message.Channel.ToString());
o.Add("guild", this.Message.Guild?.ToString());
o.Add("system", this.System.ToJson(ctx, v));
o.Add("member", this.Member.ToJson(ctx, v: v));
return o;
}
}
}