WebhookType is a future-use type, as currently audit logs are the only thing which may return it.pull/1055/head
@@ -0,0 +1,14 @@ | |||||
namespace Discord | |||||
{ | |||||
/// <summary> | |||||
/// Represents the type of a webhook. | |||||
/// </summary> | |||||
/// <remarks> | |||||
/// This type is currently unused, and is only returned in audit log responses. | |||||
/// </remarks> | |||||
public enum WebhookType | |||||
{ | |||||
/// <summary> An incoming webhook </summary> | |||||
Incoming = 1 | |||||
} | |||||
} |
@@ -2,20 +2,19 @@ | |||||
namespace Discord.API | namespace Discord.API | ||||
{ | { | ||||
//TODO: Complete this with all possible values for options | |||||
internal class AuditLogOptions | internal class AuditLogOptions | ||||
{ | { | ||||
//Message delete | //Message delete | ||||
[JsonProperty("count")] | [JsonProperty("count")] | ||||
public int? MessageDeleteCount { get; set; } //TODO: what type of int? (returned as string) | |||||
public int? MessageDeleteCount { get; set; } | |||||
[JsonProperty("channel_id")] | [JsonProperty("channel_id")] | ||||
public ulong? MessageDeleteChannelId { get; set; } | public ulong? MessageDeleteChannelId { get; set; } | ||||
//Prune | //Prune | ||||
[JsonProperty("delete_member_days")] | [JsonProperty("delete_member_days")] | ||||
public int? PruneDeleteMemberDays { get; set; } //TODO: what type of int? (returned as string) | |||||
public int? PruneDeleteMemberDays { get; set; } | |||||
[JsonProperty("members_removed")] | [JsonProperty("members_removed")] | ||||
public int? PruneMembersRemoved { get; set; } //TODO: what type of int? (returned as string) | |||||
public int? PruneMembersRemoved { get; set; } | |||||
//Overwrite Update | //Overwrite Update | ||||
[JsonProperty("role_name")] | [JsonProperty("role_name")] | ||||
@@ -7,10 +7,11 @@ namespace Discord.Rest | |||||
{ | { | ||||
public class WebhookCreateAuditLogData : IAuditLogData | public class WebhookCreateAuditLogData : IAuditLogData | ||||
{ | { | ||||
private WebhookCreateAuditLogData(IWebhook webhook, string name, ulong channelId) | |||||
private WebhookCreateAuditLogData(IWebhook webhook, WebhookType type, string name, ulong channelId) | |||||
{ | { | ||||
Webhook = webhook; | Webhook = webhook; | ||||
Name = name; | Name = name; | ||||
Type = type; | |||||
ChannelId = channelId; | ChannelId = channelId; | ||||
} | } | ||||
@@ -23,19 +24,20 @@ namespace Discord.Rest | |||||
var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); | var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); | ||||
var channelId = channelIdModel.NewValue.ToObject<ulong>(); | var channelId = channelIdModel.NewValue.ToObject<ulong>(); | ||||
var type = typeModel.NewValue.ToObject<int>(); //TODO: what on *earth* is this for | |||||
var type = typeModel.NewValue.ToObject<WebhookType>(); | |||||
var name = nameModel.NewValue.ToObject<string>(); | var name = nameModel.NewValue.ToObject<string>(); | ||||
var webhookInfo = log.Webhooks?.FirstOrDefault(x => x.Id == entry.TargetId); | var webhookInfo = log.Webhooks?.FirstOrDefault(x => x.Id == entry.TargetId); | ||||
var webhook = RestWebhook.Create(discord, (IGuild)null, webhookInfo); | var webhook = RestWebhook.Create(discord, (IGuild)null, webhookInfo); | ||||
return new WebhookCreateAuditLogData(webhook, name, channelId); | |||||
return new WebhookCreateAuditLogData(webhook, type, name, channelId); | |||||
} | } | ||||
//Corresponds to the *current* data | //Corresponds to the *current* data | ||||
public IWebhook Webhook { get; } | public IWebhook Webhook { get; } | ||||
//Corresponds to the *audit log* data | //Corresponds to the *audit log* data | ||||
public WebhookType Type { get; } | |||||
public string Name { get; } | public string Name { get; } | ||||
public ulong ChannelId { get; } | public ulong ChannelId { get; } | ||||
} | } | ||||
@@ -11,11 +11,12 @@ namespace Discord.Rest | |||||
{ | { | ||||
public class WebhookDeleteAuditLogData : IAuditLogData | public class WebhookDeleteAuditLogData : IAuditLogData | ||||
{ | { | ||||
private WebhookDeleteAuditLogData(ulong id, ulong channel, string name, string avatar) | |||||
private WebhookDeleteAuditLogData(ulong id, ulong channel, WebhookType type, string name, string avatar) | |||||
{ | { | ||||
WebhookId = id; | WebhookId = id; | ||||
ChannelId = channel; | ChannelId = channel; | ||||
Name = name; | Name = name; | ||||
Type = type; | |||||
Avatar = avatar; | Avatar = avatar; | ||||
} | } | ||||
@@ -29,15 +30,16 @@ namespace Discord.Rest | |||||
var avatarHashModel = changes.FirstOrDefault(x => x.ChangedProperty == "avatar_hash"); | var avatarHashModel = changes.FirstOrDefault(x => x.ChangedProperty == "avatar_hash"); | ||||
var channelId = channelIdModel.OldValue.ToObject<ulong>(); | var channelId = channelIdModel.OldValue.ToObject<ulong>(); | ||||
var type = typeModel.OldValue.ToObject<int>(); //TODO: what on *earth* is this for | |||||
var type = typeModel.OldValue.ToObject<WebhookType>(); | |||||
var name = nameModel.OldValue.ToObject<string>(); | var name = nameModel.OldValue.ToObject<string>(); | ||||
var avatarHash = avatarHashModel?.OldValue?.ToObject<string>(); | var avatarHash = avatarHashModel?.OldValue?.ToObject<string>(); | ||||
return new WebhookDeleteAuditLogData(entry.TargetId.Value, channelId, name, avatarHash); | |||||
return new WebhookDeleteAuditLogData(entry.TargetId.Value, channelId, type, name, avatarHash); | |||||
} | } | ||||
public ulong WebhookId { get; } | public ulong WebhookId { get; } | ||||
public ulong ChannelId { get; } | public ulong ChannelId { get; } | ||||
public WebhookType Type { get; } | |||||
public string Name { get; } | public string Name { get; } | ||||
public string Avatar { get; } | public string Avatar { get; } | ||||
} | } | ||||