From 00fa42e4951208cb924ddf379e98e3e37735c233 Mon Sep 17 00:00:00 2001 From: Chris Johnston Date: Tue, 29 Jan 2019 21:15:16 -0800 Subject: [PATCH 1/6] fix #11 add header for X-Audit-Log-Reason on all relevant methods adds a header which by default is not included for all client methods with a corresponding audit log entry type --- src/Wumpus.Net.Rest/Net/IDiscordRestApi.cs | 46 ++++++++++----------- src/Wumpus.Net.Rest/WumpusRestClient.cs | 47 +++++++++++----------- 2 files changed, 47 insertions(+), 46 deletions(-) diff --git a/src/Wumpus.Net.Rest/Net/IDiscordRestApi.cs b/src/Wumpus.Net.Rest/Net/IDiscordRestApi.cs index 5088bb0..7df282a 100644 --- a/src/Wumpus.Net.Rest/Net/IDiscordRestApi.cs +++ b/src/Wumpus.Net.Rest/Net/IDiscordRestApi.cs @@ -43,9 +43,9 @@ internal interface IDiscordRestApi : IDisposable /// If modifying a category, individual Channel Update events will fire for each child channel that also changes. /// [Patch("channels/{channelId}")] - Task ModifyChannelAsync([Path] Snowflake channelId, [Body] ModifyChannelParams args); + Task ModifyChannelAsync([Path] Snowflake channelId, [Body] ModifyChannelParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Delete("channels/{channelId}")] - Task DeleteChannelAsync([Path] Snowflake channelId); + Task DeleteChannelAsync([Path] Snowflake channelId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); /// /// Returns the for a . If operating on a , this endpoint requires the to be present on the current . @@ -68,7 +68,7 @@ internal interface IDiscordRestApi : IDisposable [Patch("channels/{channelId}/messages/{messageId}")] Task ModifyMessageAsync([Path] Snowflake channelId, [Path] Snowflake messageId, [Body] ModifyMessageParams args); [Delete("channels/{channelId}/messages/{messageId}")] - Task DeleteMessageAsync([Path] Snowflake channelId, [Path] Snowflake messageId); + Task DeleteMessageAsync([Path] Snowflake channelId, [Path] Snowflake messageId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); // TODO: validate X-Audit-Log-Reason 0-512 chars [Post("channels/{channelId}/messages/bulk-delete")] Task DeleteMessagesAsync([Path] Snowflake channelId, [Body] DeleteMessagesParams args); @@ -84,9 +84,9 @@ internal interface IDiscordRestApi : IDisposable Task DeleteAllReactionsAsync([Path] Snowflake channelId, [Path] Snowflake messageId); [Put("channels/{channelId}/permissions/{overwriteId}")] - Task EditChannelPermissionsAsync([Path] Snowflake channelId, [Path] Snowflake overwriteId, [Body] ModifyChannelPermissionsParams args); + Task EditChannelPermissionsAsync([Path] Snowflake channelId, [Path] Snowflake overwriteId, [Body] ModifyChannelPermissionsParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Delete("channels/{channelId}/permissions/{overwriteId}")] - Task DeleteChannelPermissionsAsync([Path] Snowflake channelId, [Path] Snowflake overwriteId); + Task DeleteChannelPermissionsAsync([Path] Snowflake channelId, [Path] Snowflake overwriteId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Get("channels/{channelId}/invites")] Task GetChannelInvitesAsync([Path] Snowflake channelId); @@ -115,11 +115,11 @@ internal interface IDiscordRestApi : IDisposable [Get("guilds/{guildId}/emoji/{emojiId}")] Task GetGuildEmojiAsync([Path] Snowflake guildId, [Path] Snowflake emojiId); [Post("guilds/{guildId}/emojis")] - Task CreateGuildEmojiAsync([Path] Snowflake guildId, [Body] CreateGuildEmojiParams args); + Task CreateGuildEmojiAsync([Path] Snowflake guildId, [Body] CreateGuildEmojiParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Patch("guilds/{guildId}/emoji/{emojiId}")] - Task ModifyGuildEmojiAsync([Path] Snowflake guildId, [Path] Snowflake emojiId, [Body] ModifyGuildEmojiParams args); + Task ModifyGuildEmojiAsync([Path] Snowflake guildId, [Path] Snowflake emojiId, [Body] ModifyGuildEmojiParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Delete("guilds/{guildId}/emoji/{emojiId}")] - Task DeleteGuildEmojiAsync([Path] Snowflake guildId, [Path] Snowflake emojiId); + Task DeleteGuildEmojiAsync([Path] Snowflake guildId, [Path] Snowflake emojiId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); // Gateway @@ -135,14 +135,14 @@ internal interface IDiscordRestApi : IDisposable [Post("guilds")] Task CreateGuildAsync([Body] CreateGuildParams args); [Patch("guilds/{guildId}")] - Task ModifyGuildAsync([Path] Snowflake guildId, [Body] ModifyGuildParams args); + Task ModifyGuildAsync([Path] Snowflake guildId, [Body] ModifyGuildParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Delete("guilds/{guildId}")] Task DeleteGuildAsync([Path] Snowflake guildId); [Get("guilds/{guildId}/channels")] Task GetGuildChannelsAsync([Path] Snowflake guildId); [Post("guilds/{guildId}/channels")] - Task CreateGuildChannelAsync([Path] Snowflake guildId, [Body] CreateGuildChannelParams args); + Task CreateGuildChannelAsync([Path] Snowflake guildId, [Body] CreateGuildChannelParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Patch("guilds/{guildId}/channels")] Task ModifyGuildChannelPositionsAsync([Path] Snowflake guildId, [Body] ModifyGuildChannelPositionParams[] args); @@ -153,7 +153,7 @@ internal interface IDiscordRestApi : IDisposable [Put("guilds/{guildId}/members/{userId}")] Task AddGuildMemberAsync([Path] Snowflake guildId, [Path] Snowflake userId, [Body] AddGuildMemberParams args); [Delete("guilds/{guildId}/members/{userId}")] - Task RemoveGuildMemberAsync([Path] Snowflake guildId, [Path] Snowflake userId); + Task RemoveGuildMemberAsync([Path] Snowflake guildId, [Path] Snowflake userId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Patch("guilds/{guildId}/members/{userId}")] Task ModifyGuildMemberAsync([Path] Snowflake guildId, [Path] Snowflake userId, [Body] ModifyGuildMemberParams args); [Patch("guilds/{guildId}/members/@me/nick")] @@ -167,25 +167,25 @@ internal interface IDiscordRestApi : IDisposable [Get("guilds/{guildId}/bans")] Task GetGuildBansAsync([Path] Snowflake guildId); [Put("guilds/{guildId}/bans/{userId}")] - Task CreateGuildBanAsync([Path] Snowflake guildId, [Path] Snowflake userId, [QueryMap] CreateGuildBanParams args); + Task CreateGuildBanAsync([Path] Snowflake guildId, [Path] Snowflake userId, [QueryMap] CreateGuildBanParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Delete("guilds/{guildId}/bans/{userId}")] - Task DeleteGuildBanAsync([Path] Snowflake guildId, [Path] Snowflake userId); + Task DeleteGuildBanAsync([Path] Snowflake guildId, [Path] Snowflake userId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Get("guilds/{guildId}/roles")] Task GetGuildRolesAsync([Path] Snowflake guildId); [Post("guilds/{guildId}/roles")] - Task CreateGuildRoleAsync([Path] Snowflake guildId, [Body] CreateGuildRoleParams args); + Task CreateGuildRoleAsync([Path] Snowflake guildId, [Body] CreateGuildRoleParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Delete("guilds/{guildId}/roles/{roleId}")] - Task DeleteGuildRoleAsync([Path] Snowflake guildId, [Path] Snowflake roleId); + Task DeleteGuildRoleAsync([Path] Snowflake guildId, [Path] Snowflake roleId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Patch("guilds/{guildId}/roles/{roleId}")] - Task ModifyGuildRoleAsync([Path] Snowflake guildId, [Path] Snowflake roleId, [Body] ModifyGuildRoleParams args); + Task ModifyGuildRoleAsync([Path] Snowflake guildId, [Path] Snowflake roleId, [Body] ModifyGuildRoleParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Patch("guilds/{guildId}/roles")] Task ModifyGuildRolePositionsAsync([Path] Snowflake guildId, [Body] ModifyGuildRolePositionParams[] args); [Get("guilds/{guildId}/prune")] Task GetGuildPruneCountAsync([Path] Snowflake guildId, [QueryMap] GuildPruneParams args); [Post("guilds/{guildId}/prune")] - Task PruneGuildMembersAsync([Path] Snowflake guildId, [QueryMap] GuildPruneParams args); + Task PruneGuildMembersAsync([Path] Snowflake guildId, [QueryMap] GuildPruneParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Get("guilds/{guildId}/regions")] Task GetGuildVoiceRegionsAsync([Path] Snowflake guildId); @@ -217,7 +217,7 @@ internal interface IDiscordRestApi : IDisposable [Get("invites/{code}")] Task GetInviteAsync([Path] Utf8String code, [QueryMap] GetInviteParams args); [Delete("invites/{code}")] - Task DeleteInviteAsync([Path] Utf8String code); + Task DeleteInviteAsync([Path] Utf8String code, [Header(WumpusRestClient.ReasonHeader)] string reason = null); // OAuth @@ -265,19 +265,19 @@ internal interface IDiscordRestApi : IDisposable Task GetWebhookAsync([Path] Snowflake webhookId, [Path] Utf8String webhookToken); [Post("channels/{channelId}/webhooks")] - Task CreateWebhookAsync([Path] Snowflake channelId, [Body] CreateWebhookParams args); + Task CreateWebhookAsync([Path] Snowflake channelId, [Body] CreateWebhookParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Delete("webhooks/{webhookId}")] - Task DeleteWebhookAsync([Path] Snowflake webhookId); + Task DeleteWebhookAsync([Path] Snowflake webhookId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Delete("webhooks/{webhookId}/{webhookToken}")] [Header("Authorization", null)] - Task DeleteWebhookAsync([Path] Snowflake webhookId, [Path] Utf8String webhookToken); + Task DeleteWebhookAsync([Path] Snowflake webhookId, [Path] Utf8String webhookToken, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Patch("webhooks/{webhookId}")] - Task ModifyWebhookAsync([Path] Snowflake webhookId, ModifyWebhookParams args); + Task ModifyWebhookAsync([Path] Snowflake webhookId, ModifyWebhookParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Patch("webhooks/{webhookId}/{webhookToken}")] [Header("Authorization", null)] - Task ModifyWebhookAsync([Path] Snowflake webhookId, [Path] Utf8String webhookToken, ModifyWebhookParams args); + Task ModifyWebhookAsync([Path] Snowflake webhookId, [Path] Utf8String webhookToken, ModifyWebhookParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Post("webhooks/{webhookId}/{webhookToken}")] [Header("Authorization", null)] diff --git a/src/Wumpus.Net.Rest/WumpusRestClient.cs b/src/Wumpus.Net.Rest/WumpusRestClient.cs index 8bbebf0..0ad1562 100644 --- a/src/Wumpus.Net.Rest/WumpusRestClient.cs +++ b/src/Wumpus.Net.Rest/WumpusRestClient.cs @@ -16,6 +16,7 @@ namespace Wumpus public class WumpusRestClient : IDiscordRestApi, IDisposable { public const int ApiVersion = 6; + public const string ReasonHeader = "X-Audit-Log-Reason"; public static string Version { get; } = typeof(WumpusRestClient).GetTypeInfo().Assembly.GetCustomAttribute()?.InformationalVersion ?? typeof(WumpusRestClient).GetTypeInfo().Assembly.GetName().Version.ToString(3) ?? @@ -64,14 +65,14 @@ public Task ReplaceChannelAsync(Snowflake channelId, ModifyChannelParam args.Validate(); return _api.ReplaceChannelAsync(channelId, args); } - public Task ModifyChannelAsync(Snowflake channelId, ModifyChannelParams args) + public Task ModifyChannelAsync(Snowflake channelId, ModifyChannelParams args, string reason = null) { Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotNull(args, nameof(args)); args.Validate(); return _api.ModifyChannelAsync(channelId, args); } - public Task DeleteChannelAsync(Snowflake channelId) + public Task DeleteChannelAsync(Snowflake channelId, string reason = null) { Preconditions.NotZero(channelId, nameof(channelId)); return _api.DeleteChannelAsync(channelId); @@ -105,7 +106,7 @@ public Task ModifyMessageAsync(Snowflake channelId, Snowflake messageId args.Validate(); return _api.ModifyMessageAsync(channelId, messageId, args); } - public Task DeleteMessageAsync(Snowflake channelId, Snowflake messageId) + public Task DeleteMessageAsync(Snowflake channelId, Snowflake messageId, string reason = null) { Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotZero(messageId, nameof(messageId)); @@ -155,7 +156,7 @@ public Task DeleteAllReactionsAsync(Snowflake channelId, Snowflake messageId) return _api.DeleteAllReactionsAsync(channelId, messageId); } - public Task EditChannelPermissionsAsync(Snowflake channelId, Snowflake overwriteId, ModifyChannelPermissionsParams args) + public Task EditChannelPermissionsAsync(Snowflake channelId, Snowflake overwriteId, ModifyChannelPermissionsParams args, string reason = null) { Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotZero(overwriteId, nameof(overwriteId)); @@ -163,7 +164,7 @@ public Task EditChannelPermissionsAsync(Snowflake channelId, Snowflake overwrite args.Validate(); return _api.EditChannelPermissionsAsync(channelId, overwriteId, args); } - public Task DeleteChannelPermissionsAsync(Snowflake channelId, Snowflake overwriteId) + public Task DeleteChannelPermissionsAsync(Snowflake channelId, Snowflake overwriteId, string reason = null) { Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotZero(overwriteId, nameof(overwriteId)); @@ -235,20 +236,20 @@ public Task GetGuildEmojiAsync(Snowflake guildId, Snowflake emojiId) Preconditions.NotZero(emojiId, nameof(emojiId)); return _api.GetGuildEmojiAsync(guildId, emojiId); } - public Task CreateGuildEmojiAsync(Snowflake guildId, CreateGuildEmojiParams args) + public Task CreateGuildEmojiAsync(Snowflake guildId, CreateGuildEmojiParams args, string reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); return _api.CreateGuildEmojiAsync(guildId, args); } - public Task ModifyGuildEmojiAsync(Snowflake guildId, Snowflake emojiId, ModifyGuildEmojiParams args) + public Task ModifyGuildEmojiAsync(Snowflake guildId, Snowflake emojiId, ModifyGuildEmojiParams args, string reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(emojiId, nameof(emojiId)); Preconditions.NotNull(args, nameof(args)); return _api.ModifyGuildEmojiAsync(guildId, emojiId, args); } - public Task DeleteGuildEmojiAsync(Snowflake guildId, Snowflake emojiId) + public Task DeleteGuildEmojiAsync(Snowflake guildId, Snowflake emojiId, string reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(emojiId, nameof(emojiId)); @@ -279,7 +280,7 @@ public Task CreateGuildAsync(CreateGuildParams args) args.Validate(); return _api.CreateGuildAsync(args); } - public Task ModifyGuildAsync(Snowflake guildId, ModifyGuildParams args) + public Task ModifyGuildAsync(Snowflake guildId, ModifyGuildParams args, string reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); @@ -297,7 +298,7 @@ public Task GetGuildChannelsAsync(Snowflake guildId) Preconditions.NotZero(guildId, nameof(guildId)); return _api.GetGuildChannelsAsync(guildId); } - public Task CreateGuildChannelAsync(Snowflake guildId, CreateGuildChannelParams args) + public Task CreateGuildChannelAsync(Snowflake guildId, CreateGuildChannelParams args, string reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); @@ -334,7 +335,7 @@ public Task AddGuildMemberAsync(Snowflake guildId, Snowflake userId args.Validate(); return _api.AddGuildMemberAsync(guildId, userId, args); } - public Task RemoveGuildMemberAsync(Snowflake guildId, Snowflake userId) + public Task RemoveGuildMemberAsync(Snowflake guildId, Snowflake userId, string reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(userId, nameof(userId)); @@ -376,7 +377,7 @@ public Task GetGuildBansAsync(Snowflake guildId) Preconditions.NotZero(guildId, nameof(guildId)); return _api.GetGuildBansAsync(guildId); } - public Task CreateGuildBanAsync(Snowflake guildId, Snowflake userId, CreateGuildBanParams args) + public Task CreateGuildBanAsync(Snowflake guildId, Snowflake userId, CreateGuildBanParams args, string reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(userId, nameof(userId)); @@ -384,7 +385,7 @@ public Task CreateGuildBanAsync(Snowflake guildId, Snowflake userId, CreateGuild args.Validate(); return _api.CreateGuildBanAsync(guildId, userId, args); } - public Task DeleteGuildBanAsync(Snowflake guildId, Snowflake userId) + public Task DeleteGuildBanAsync(Snowflake guildId, Snowflake userId, string reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(userId, nameof(userId)); @@ -396,20 +397,20 @@ public Task GetGuildRolesAsync(Snowflake guildId) Preconditions.NotZero(guildId, nameof(guildId)); return _api.GetGuildRolesAsync(guildId); } - public Task CreateGuildRoleAsync(Snowflake guildId, CreateGuildRoleParams args) + public Task CreateGuildRoleAsync(Snowflake guildId, CreateGuildRoleParams args, string reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); args.Validate(); return _api.CreateGuildRoleAsync(guildId, args); } - public Task DeleteGuildRoleAsync(Snowflake guildId, Snowflake roleId) + public Task DeleteGuildRoleAsync(Snowflake guildId, Snowflake roleId, string reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(roleId, nameof(roleId)); return _api.DeleteGuildRoleAsync(guildId, roleId); } - public Task ModifyGuildRoleAsync(Snowflake guildId, Snowflake roleId, ModifyGuildRoleParams args) + public Task ModifyGuildRoleAsync(Snowflake guildId, Snowflake roleId, ModifyGuildRoleParams args, string reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(roleId, nameof(roleId)); @@ -433,7 +434,7 @@ public Task GetGuildPruneCountAsync(Snowflake guildId, args.Validate(); return _api.GetGuildPruneCountAsync(guildId, args); } - public Task PruneGuildMembersAsync(Snowflake guildId, GuildPruneParams args) + public Task PruneGuildMembersAsync(Snowflake guildId, GuildPruneParams args, string reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); @@ -514,7 +515,7 @@ public Task GetInviteAsync(Utf8String code, GetInviteParams args) args.Validate(); return _api.GetInviteAsync(code, args); } - public Task DeleteInviteAsync(Utf8String code) + public Task DeleteInviteAsync(Utf8String code, string reason = null) { Preconditions.NotNullOrWhitespace(code, nameof(code)); return _api.DeleteInviteAsync(code); @@ -598,7 +599,7 @@ public Task GetWebhookAsync(Snowflake webhookId, Utf8String webhookToke return _api.GetWebhookAsync(webhookId, webhookToken); } - public Task CreateWebhookAsync(Snowflake channelId, CreateWebhookParams args) + public Task CreateWebhookAsync(Snowflake channelId, CreateWebhookParams args, string reason = null) { Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotNull(args, nameof(args)); @@ -606,26 +607,26 @@ public Task CreateWebhookAsync(Snowflake channelId, CreateWebhookParams return _api.CreateWebhookAsync(channelId, args); } - public Task DeleteWebhookAsync(Snowflake webhookId) + public Task DeleteWebhookAsync(Snowflake webhookId, string reason = null) { Preconditions.NotZero(webhookId, nameof(webhookId)); return _api.DeleteWebhookAsync(webhookId); } - public Task DeleteWebhookAsync(Snowflake webhookId, Utf8String webhookToken) + public Task DeleteWebhookAsync(Snowflake webhookId, Utf8String webhookToken, string reason = null) { Preconditions.NotZero(webhookId, nameof(webhookId)); Preconditions.NotNullOrWhitespace(webhookToken, nameof(webhookToken)); return _api.DeleteWebhookAsync(webhookId, webhookToken); } - public Task ModifyWebhookAsync(Snowflake webhookId, ModifyWebhookParams args) + public Task ModifyWebhookAsync(Snowflake webhookId, ModifyWebhookParams args, string reason = null) { Preconditions.NotZero(webhookId, nameof(webhookId)); Preconditions.NotNull(args, nameof(args)); args.Validate(); return _api.ModifyWebhookAsync(webhookId, args); } - public Task ModifyWebhookAsync(Snowflake webhookId, Utf8String webhookToken, ModifyWebhookParams args) + public Task ModifyWebhookAsync(Snowflake webhookId, Utf8String webhookToken, ModifyWebhookParams args, string reason = null) { Preconditions.NotZero(webhookId, nameof(webhookId)); Preconditions.NotNullOrWhitespace(webhookToken, nameof(webhookToken)); From 18eb6ac81010dbfc4d2368b391852668f3144868 Mon Sep 17 00:00:00 2001 From: Chris Johnston Date: Tue, 29 Jan 2019 21:41:34 -0800 Subject: [PATCH 2/6] pass the reason on to the API --- src/Wumpus.Net.Rest/WumpusRestClient.cs | 46 ++++++++++++------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/Wumpus.Net.Rest/WumpusRestClient.cs b/src/Wumpus.Net.Rest/WumpusRestClient.cs index 0ad1562..5ec9590 100644 --- a/src/Wumpus.Net.Rest/WumpusRestClient.cs +++ b/src/Wumpus.Net.Rest/WumpusRestClient.cs @@ -70,12 +70,12 @@ public Task ModifyChannelAsync(Snowflake channelId, ModifyChannelParams Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotNull(args, nameof(args)); args.Validate(); - return _api.ModifyChannelAsync(channelId, args); + return _api.ModifyChannelAsync(channelId, args, reason); } public Task DeleteChannelAsync(Snowflake channelId, string reason = null) { Preconditions.NotZero(channelId, nameof(channelId)); - return _api.DeleteChannelAsync(channelId); + return _api.DeleteChannelAsync(channelId, reason); } public Task GetChannelMessagesAsync(Snowflake channelId, GetChannelMessagesParams args) @@ -110,7 +110,7 @@ public Task DeleteMessageAsync(Snowflake channelId, Snowflake messageId, string { Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotZero(messageId, nameof(messageId)); - return _api.DeleteMessageAsync(channelId, messageId); + return _api.DeleteMessageAsync(channelId, messageId, reason); } public Task DeleteMessagesAsync(Snowflake channelId, DeleteMessagesParams args) { @@ -162,13 +162,13 @@ public Task EditChannelPermissionsAsync(Snowflake channelId, Snowflake overwrite Preconditions.NotZero(overwriteId, nameof(overwriteId)); Preconditions.NotNull(args, nameof(args)); args.Validate(); - return _api.EditChannelPermissionsAsync(channelId, overwriteId, args); + return _api.EditChannelPermissionsAsync(channelId, overwriteId, args, reason); } public Task DeleteChannelPermissionsAsync(Snowflake channelId, Snowflake overwriteId, string reason = null) { Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotZero(overwriteId, nameof(overwriteId)); - return _api.DeleteChannelPermissionsAsync(channelId, overwriteId); + return _api.DeleteChannelPermissionsAsync(channelId, overwriteId, reason); } public Task GetChannelInvitesAsync(Snowflake channelId) @@ -240,20 +240,20 @@ public Task CreateGuildEmojiAsync(Snowflake guildId, CreateGuildEmojiPara { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); - return _api.CreateGuildEmojiAsync(guildId, args); + return _api.CreateGuildEmojiAsync(guildId, args, reason); } public Task ModifyGuildEmojiAsync(Snowflake guildId, Snowflake emojiId, ModifyGuildEmojiParams args, string reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(emojiId, nameof(emojiId)); Preconditions.NotNull(args, nameof(args)); - return _api.ModifyGuildEmojiAsync(guildId, emojiId, args); + return _api.ModifyGuildEmojiAsync(guildId, emojiId, args, reason); } public Task DeleteGuildEmojiAsync(Snowflake guildId, Snowflake emojiId, string reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(emojiId, nameof(emojiId)); - return _api.DeleteGuildEmojiAsync(guildId, emojiId); + return _api.DeleteGuildEmojiAsync(guildId, emojiId, reason); } // Gateway @@ -285,7 +285,7 @@ public Task ModifyGuildAsync(Snowflake guildId, ModifyGuildParams args, s Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); args.Validate(); - return _api.ModifyGuildAsync(guildId, args); + return _api.ModifyGuildAsync(guildId, args, reason); } public Task DeleteGuildAsync(Snowflake guildId) { @@ -303,7 +303,7 @@ public Task CreateGuildChannelAsync(Snowflake guildId, CreateGuildChann Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); args.Validate(); - return _api.CreateGuildChannelAsync(guildId, args); + return _api.CreateGuildChannelAsync(guildId, args, reason); } public Task ModifyGuildChannelPositionsAsync(Snowflake guildId, ModifyGuildChannelPositionParams[] args) { @@ -339,7 +339,7 @@ public Task RemoveGuildMemberAsync(Snowflake guildId, Snowflake userId, string r { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(userId, nameof(userId)); - return _api.RemoveGuildMemberAsync(guildId, userId); + return _api.RemoveGuildMemberAsync(guildId, userId, reason); } public Task ModifyGuildMemberAsync(Snowflake guildId, Snowflake userId, ModifyGuildMemberParams args) { @@ -383,13 +383,13 @@ public Task CreateGuildBanAsync(Snowflake guildId, Snowflake userId, CreateGuild Preconditions.NotZero(userId, nameof(userId)); Preconditions.NotNull(args, nameof(args)); args.Validate(); - return _api.CreateGuildBanAsync(guildId, userId, args); + return _api.CreateGuildBanAsync(guildId, userId, args, reason); } public Task DeleteGuildBanAsync(Snowflake guildId, Snowflake userId, string reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(userId, nameof(userId)); - return _api.DeleteGuildBanAsync(guildId, userId); + return _api.DeleteGuildBanAsync(guildId, userId, reason); } public Task GetGuildRolesAsync(Snowflake guildId) @@ -402,13 +402,13 @@ public Task CreateGuildRoleAsync(Snowflake guildId, CreateGuildRoleParams Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); args.Validate(); - return _api.CreateGuildRoleAsync(guildId, args); + return _api.CreateGuildRoleAsync(guildId, args, reason); } public Task DeleteGuildRoleAsync(Snowflake guildId, Snowflake roleId, string reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(roleId, nameof(roleId)); - return _api.DeleteGuildRoleAsync(guildId, roleId); + return _api.DeleteGuildRoleAsync(guildId, roleId, reason); } public Task ModifyGuildRoleAsync(Snowflake guildId, Snowflake roleId, ModifyGuildRoleParams args, string reason = null) { @@ -416,7 +416,7 @@ public Task ModifyGuildRoleAsync(Snowflake guildId, Snowflake roleId, Modi Preconditions.NotZero(roleId, nameof(roleId)); Preconditions.NotNull(args, nameof(args)); args.Validate(); - return _api.ModifyGuildRoleAsync(guildId, roleId, args); + return _api.ModifyGuildRoleAsync(guildId, roleId, args, reason); } public Task ModifyGuildRolePositionsAsync(Snowflake guildId, ModifyGuildRolePositionParams[] args) { @@ -439,7 +439,7 @@ public Task PruneGuildMembersAsync(Snowflake guildId, G Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); args.Validate(); - return _api.PruneGuildMembersAsync(guildId, args); + return _api.PruneGuildMembersAsync(guildId, args, reason); } public Task GetGuildVoiceRegionsAsync(Snowflake guildId) @@ -518,7 +518,7 @@ public Task GetInviteAsync(Utf8String code, GetInviteParams args) public Task DeleteInviteAsync(Utf8String code, string reason = null) { Preconditions.NotNullOrWhitespace(code, nameof(code)); - return _api.DeleteInviteAsync(code); + return _api.DeleteInviteAsync(code, reason); } // User @@ -604,19 +604,19 @@ public Task CreateWebhookAsync(Snowflake channelId, CreateWebhookParams Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotNull(args, nameof(args)); args.Validate(); - return _api.CreateWebhookAsync(channelId, args); + return _api.CreateWebhookAsync(channelId, args, reason); } public Task DeleteWebhookAsync(Snowflake webhookId, string reason = null) { Preconditions.NotZero(webhookId, nameof(webhookId)); - return _api.DeleteWebhookAsync(webhookId); + return _api.DeleteWebhookAsync(webhookId, reason); } public Task DeleteWebhookAsync(Snowflake webhookId, Utf8String webhookToken, string reason = null) { Preconditions.NotZero(webhookId, nameof(webhookId)); Preconditions.NotNullOrWhitespace(webhookToken, nameof(webhookToken)); - return _api.DeleteWebhookAsync(webhookId, webhookToken); + return _api.DeleteWebhookAsync(webhookId, webhookToken, reason); } public Task ModifyWebhookAsync(Snowflake webhookId, ModifyWebhookParams args, string reason = null) @@ -624,7 +624,7 @@ public Task ModifyWebhookAsync(Snowflake webhookId, ModifyWebhookParams Preconditions.NotZero(webhookId, nameof(webhookId)); Preconditions.NotNull(args, nameof(args)); args.Validate(); - return _api.ModifyWebhookAsync(webhookId, args); + return _api.ModifyWebhookAsync(webhookId, args, reason); } public Task ModifyWebhookAsync(Snowflake webhookId, Utf8String webhookToken, ModifyWebhookParams args, string reason = null) { @@ -632,7 +632,7 @@ public Task ModifyWebhookAsync(Snowflake webhookId, Utf8String webhookT Preconditions.NotNullOrWhitespace(webhookToken, nameof(webhookToken)); Preconditions.NotNull(args, nameof(args)); args.Validate(); - return _api.ModifyWebhookAsync(webhookId, webhookToken, args); + return _api.ModifyWebhookAsync(webhookId, webhookToken, args, reason); } public Task ExecuteWebhookAsync(Snowflake webhookId, Utf8String webhookToken, ExecuteWebhookParams args) From 72edc0ae3e4ada5c4d59c6c69f1ad3be10fdf254 Mon Sep 17 00:00:00 2001 From: Chris Johnston Date: Tue, 29 Jan 2019 21:43:49 -0800 Subject: [PATCH 3/6] remove TODO question, asking in PR --- src/Wumpus.Net.Rest/Net/IDiscordRestApi.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Wumpus.Net.Rest/Net/IDiscordRestApi.cs b/src/Wumpus.Net.Rest/Net/IDiscordRestApi.cs index 7df282a..eb2ead5 100644 --- a/src/Wumpus.Net.Rest/Net/IDiscordRestApi.cs +++ b/src/Wumpus.Net.Rest/Net/IDiscordRestApi.cs @@ -68,7 +68,7 @@ internal interface IDiscordRestApi : IDisposable [Patch("channels/{channelId}/messages/{messageId}")] Task ModifyMessageAsync([Path] Snowflake channelId, [Path] Snowflake messageId, [Body] ModifyMessageParams args); [Delete("channels/{channelId}/messages/{messageId}")] - Task DeleteMessageAsync([Path] Snowflake channelId, [Path] Snowflake messageId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); // TODO: validate X-Audit-Log-Reason 0-512 chars + Task DeleteMessageAsync([Path] Snowflake channelId, [Path] Snowflake messageId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); [Post("channels/{channelId}/messages/bulk-delete")] Task DeleteMessagesAsync([Path] Snowflake channelId, [Body] DeleteMessagesParams args); From c303e8e24e0e71b25e985c2518bc5c1e903e541b Mon Sep 17 00:00:00 2001 From: Chris Johnston Date: Tue, 29 Jan 2019 21:57:51 -0800 Subject: [PATCH 4/6] use preconditions to check the length of the x-audit-log-reason header --- src/Wumpus.Net.Rest/WumpusRestClient.cs | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/Wumpus.Net.Rest/WumpusRestClient.cs b/src/Wumpus.Net.Rest/WumpusRestClient.cs index 5ec9590..8f91e6b 100644 --- a/src/Wumpus.Net.Rest/WumpusRestClient.cs +++ b/src/Wumpus.Net.Rest/WumpusRestClient.cs @@ -17,6 +17,10 @@ public class WumpusRestClient : IDiscordRestApi, IDisposable { public const int ApiVersion = 6; public const string ReasonHeader = "X-Audit-Log-Reason"; + /// + /// The maximum valid length of the audit log reason string. + /// + public const int MaxReasonHeaderLength = 512; public static string Version { get; } = typeof(WumpusRestClient).GetTypeInfo().Assembly.GetCustomAttribute()?.InformationalVersion ?? typeof(WumpusRestClient).GetTypeInfo().Assembly.GetName().Version.ToString(3) ?? @@ -69,12 +73,14 @@ public Task ModifyChannelAsync(Snowflake channelId, ModifyChannelParams { Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotNull(args, nameof(args)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); args.Validate(); return _api.ModifyChannelAsync(channelId, args, reason); } public Task DeleteChannelAsync(Snowflake channelId, string reason = null) { Preconditions.NotZero(channelId, nameof(channelId)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); return _api.DeleteChannelAsync(channelId, reason); } @@ -110,6 +116,7 @@ public Task DeleteMessageAsync(Snowflake channelId, Snowflake messageId, string { Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotZero(messageId, nameof(messageId)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); return _api.DeleteMessageAsync(channelId, messageId, reason); } public Task DeleteMessagesAsync(Snowflake channelId, DeleteMessagesParams args) @@ -161,6 +168,7 @@ public Task EditChannelPermissionsAsync(Snowflake channelId, Snowflake overwrite Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotZero(overwriteId, nameof(overwriteId)); Preconditions.NotNull(args, nameof(args)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); args.Validate(); return _api.EditChannelPermissionsAsync(channelId, overwriteId, args, reason); } @@ -168,6 +176,7 @@ public Task DeleteChannelPermissionsAsync(Snowflake channelId, Snowflake overwri { Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotZero(overwriteId, nameof(overwriteId)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); return _api.DeleteChannelPermissionsAsync(channelId, overwriteId, reason); } @@ -240,6 +249,7 @@ public Task CreateGuildEmojiAsync(Snowflake guildId, CreateGuildEmojiPara { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); return _api.CreateGuildEmojiAsync(guildId, args, reason); } public Task ModifyGuildEmojiAsync(Snowflake guildId, Snowflake emojiId, ModifyGuildEmojiParams args, string reason = null) @@ -247,12 +257,14 @@ public Task ModifyGuildEmojiAsync(Snowflake guildId, Snowflake emojiId, M Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(emojiId, nameof(emojiId)); Preconditions.NotNull(args, nameof(args)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); return _api.ModifyGuildEmojiAsync(guildId, emojiId, args, reason); } public Task DeleteGuildEmojiAsync(Snowflake guildId, Snowflake emojiId, string reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(emojiId, nameof(emojiId)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); return _api.DeleteGuildEmojiAsync(guildId, emojiId, reason); } @@ -284,6 +296,7 @@ public Task ModifyGuildAsync(Snowflake guildId, ModifyGuildParams args, s { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); args.Validate(); return _api.ModifyGuildAsync(guildId, args, reason); } @@ -302,6 +315,7 @@ public Task CreateGuildChannelAsync(Snowflake guildId, CreateGuildChann { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); args.Validate(); return _api.CreateGuildChannelAsync(guildId, args, reason); } @@ -339,6 +353,7 @@ public Task RemoveGuildMemberAsync(Snowflake guildId, Snowflake userId, string r { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(userId, nameof(userId)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); return _api.RemoveGuildMemberAsync(guildId, userId, reason); } public Task ModifyGuildMemberAsync(Snowflake guildId, Snowflake userId, ModifyGuildMemberParams args) @@ -382,6 +397,7 @@ public Task CreateGuildBanAsync(Snowflake guildId, Snowflake userId, CreateGuild Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(userId, nameof(userId)); Preconditions.NotNull(args, nameof(args)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); args.Validate(); return _api.CreateGuildBanAsync(guildId, userId, args, reason); } @@ -389,6 +405,7 @@ public Task DeleteGuildBanAsync(Snowflake guildId, Snowflake userId, string reas { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(userId, nameof(userId)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); return _api.DeleteGuildBanAsync(guildId, userId, reason); } @@ -401,6 +418,7 @@ public Task CreateGuildRoleAsync(Snowflake guildId, CreateGuildRoleParams { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); args.Validate(); return _api.CreateGuildRoleAsync(guildId, args, reason); } @@ -408,6 +426,7 @@ public Task DeleteGuildRoleAsync(Snowflake guildId, Snowflake roleId, stri { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(roleId, nameof(roleId)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); return _api.DeleteGuildRoleAsync(guildId, roleId, reason); } public Task ModifyGuildRoleAsync(Snowflake guildId, Snowflake roleId, ModifyGuildRoleParams args, string reason = null) @@ -415,6 +434,7 @@ public Task ModifyGuildRoleAsync(Snowflake guildId, Snowflake roleId, Modi Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(roleId, nameof(roleId)); Preconditions.NotNull(args, nameof(args)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); args.Validate(); return _api.ModifyGuildRoleAsync(guildId, roleId, args, reason); } @@ -438,6 +458,7 @@ public Task PruneGuildMembersAsync(Snowflake guildId, G { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); args.Validate(); return _api.PruneGuildMembersAsync(guildId, args, reason); } @@ -518,6 +539,7 @@ public Task GetInviteAsync(Utf8String code, GetInviteParams args) public Task DeleteInviteAsync(Utf8String code, string reason = null) { Preconditions.NotNullOrWhitespace(code, nameof(code)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); return _api.DeleteInviteAsync(code, reason); } @@ -603,6 +625,7 @@ public Task CreateWebhookAsync(Snowflake channelId, CreateWebhookParams { Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotNull(args, nameof(args)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); args.Validate(); return _api.CreateWebhookAsync(channelId, args, reason); } @@ -610,12 +633,14 @@ public Task CreateWebhookAsync(Snowflake channelId, CreateWebhookParams public Task DeleteWebhookAsync(Snowflake webhookId, string reason = null) { Preconditions.NotZero(webhookId, nameof(webhookId)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); return _api.DeleteWebhookAsync(webhookId, reason); } public Task DeleteWebhookAsync(Snowflake webhookId, Utf8String webhookToken, string reason = null) { Preconditions.NotZero(webhookId, nameof(webhookId)); Preconditions.NotNullOrWhitespace(webhookToken, nameof(webhookToken)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); return _api.DeleteWebhookAsync(webhookId, webhookToken, reason); } @@ -623,6 +648,7 @@ public Task ModifyWebhookAsync(Snowflake webhookId, ModifyWebhookParams { Preconditions.NotZero(webhookId, nameof(webhookId)); Preconditions.NotNull(args, nameof(args)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); args.Validate(); return _api.ModifyWebhookAsync(webhookId, args, reason); } @@ -631,6 +657,7 @@ public Task ModifyWebhookAsync(Snowflake webhookId, Utf8String webhookT Preconditions.NotZero(webhookId, nameof(webhookId)); Preconditions.NotNullOrWhitespace(webhookToken, nameof(webhookToken)); Preconditions.NotNull(args, nameof(args)); + Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); args.Validate(); return _api.ModifyWebhookAsync(webhookId, webhookToken, args, reason); } From c4c764024a60422b517c1e04c5baa7cdeee216c4 Mon Sep 17 00:00:00 2001 From: Chris Johnston Date: Tue, 29 Jan 2019 22:01:35 -0800 Subject: [PATCH 5/6] minor wording update in comment --- src/Wumpus.Net.Rest/WumpusRestClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Wumpus.Net.Rest/WumpusRestClient.cs b/src/Wumpus.Net.Rest/WumpusRestClient.cs index 8f91e6b..74ebe8d 100644 --- a/src/Wumpus.Net.Rest/WumpusRestClient.cs +++ b/src/Wumpus.Net.Rest/WumpusRestClient.cs @@ -18,7 +18,7 @@ public class WumpusRestClient : IDiscordRestApi, IDisposable public const int ApiVersion = 6; public const string ReasonHeader = "X-Audit-Log-Reason"; /// - /// The maximum valid length of the audit log reason string. + /// The maximum valid length of the audit log reason header string. /// public const int MaxReasonHeaderLength = 512; public static string Version { get; } = From d63347508a98e3dd58680276ade30b7336d79bd7 Mon Sep 17 00:00:00 2001 From: Chris Johnston Date: Wed, 13 Feb 2019 16:45:59 -0800 Subject: [PATCH 6/6] Use Utf8String instead of string for audit log reason header param --- src/Wumpus.Net.Rest/Net/IDiscordRestApi.cs | 46 +++++++++++----------- src/Wumpus.Net.Rest/WumpusRestClient.cs | 46 +++++++++++----------- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/src/Wumpus.Net.Rest/Net/IDiscordRestApi.cs b/src/Wumpus.Net.Rest/Net/IDiscordRestApi.cs index eb2ead5..de8a64a 100644 --- a/src/Wumpus.Net.Rest/Net/IDiscordRestApi.cs +++ b/src/Wumpus.Net.Rest/Net/IDiscordRestApi.cs @@ -43,9 +43,9 @@ internal interface IDiscordRestApi : IDisposable /// If modifying a category, individual Channel Update events will fire for each child channel that also changes. /// [Patch("channels/{channelId}")] - Task ModifyChannelAsync([Path] Snowflake channelId, [Body] ModifyChannelParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task ModifyChannelAsync([Path] Snowflake channelId, [Body] ModifyChannelParams args, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Delete("channels/{channelId}")] - Task DeleteChannelAsync([Path] Snowflake channelId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task DeleteChannelAsync([Path] Snowflake channelId, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); /// /// Returns the for a . If operating on a , this endpoint requires the to be present on the current . @@ -68,7 +68,7 @@ internal interface IDiscordRestApi : IDisposable [Patch("channels/{channelId}/messages/{messageId}")] Task ModifyMessageAsync([Path] Snowflake channelId, [Path] Snowflake messageId, [Body] ModifyMessageParams args); [Delete("channels/{channelId}/messages/{messageId}")] - Task DeleteMessageAsync([Path] Snowflake channelId, [Path] Snowflake messageId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task DeleteMessageAsync([Path] Snowflake channelId, [Path] Snowflake messageId, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Post("channels/{channelId}/messages/bulk-delete")] Task DeleteMessagesAsync([Path] Snowflake channelId, [Body] DeleteMessagesParams args); @@ -84,9 +84,9 @@ internal interface IDiscordRestApi : IDisposable Task DeleteAllReactionsAsync([Path] Snowflake channelId, [Path] Snowflake messageId); [Put("channels/{channelId}/permissions/{overwriteId}")] - Task EditChannelPermissionsAsync([Path] Snowflake channelId, [Path] Snowflake overwriteId, [Body] ModifyChannelPermissionsParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task EditChannelPermissionsAsync([Path] Snowflake channelId, [Path] Snowflake overwriteId, [Body] ModifyChannelPermissionsParams args, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Delete("channels/{channelId}/permissions/{overwriteId}")] - Task DeleteChannelPermissionsAsync([Path] Snowflake channelId, [Path] Snowflake overwriteId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task DeleteChannelPermissionsAsync([Path] Snowflake channelId, [Path] Snowflake overwriteId, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Get("channels/{channelId}/invites")] Task GetChannelInvitesAsync([Path] Snowflake channelId); @@ -115,11 +115,11 @@ internal interface IDiscordRestApi : IDisposable [Get("guilds/{guildId}/emoji/{emojiId}")] Task GetGuildEmojiAsync([Path] Snowflake guildId, [Path] Snowflake emojiId); [Post("guilds/{guildId}/emojis")] - Task CreateGuildEmojiAsync([Path] Snowflake guildId, [Body] CreateGuildEmojiParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task CreateGuildEmojiAsync([Path] Snowflake guildId, [Body] CreateGuildEmojiParams args, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Patch("guilds/{guildId}/emoji/{emojiId}")] - Task ModifyGuildEmojiAsync([Path] Snowflake guildId, [Path] Snowflake emojiId, [Body] ModifyGuildEmojiParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task ModifyGuildEmojiAsync([Path] Snowflake guildId, [Path] Snowflake emojiId, [Body] ModifyGuildEmojiParams args, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Delete("guilds/{guildId}/emoji/{emojiId}")] - Task DeleteGuildEmojiAsync([Path] Snowflake guildId, [Path] Snowflake emojiId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task DeleteGuildEmojiAsync([Path] Snowflake guildId, [Path] Snowflake emojiId, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); // Gateway @@ -135,14 +135,14 @@ internal interface IDiscordRestApi : IDisposable [Post("guilds")] Task CreateGuildAsync([Body] CreateGuildParams args); [Patch("guilds/{guildId}")] - Task ModifyGuildAsync([Path] Snowflake guildId, [Body] ModifyGuildParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task ModifyGuildAsync([Path] Snowflake guildId, [Body] ModifyGuildParams args, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Delete("guilds/{guildId}")] Task DeleteGuildAsync([Path] Snowflake guildId); [Get("guilds/{guildId}/channels")] Task GetGuildChannelsAsync([Path] Snowflake guildId); [Post("guilds/{guildId}/channels")] - Task CreateGuildChannelAsync([Path] Snowflake guildId, [Body] CreateGuildChannelParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task CreateGuildChannelAsync([Path] Snowflake guildId, [Body] CreateGuildChannelParams args, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Patch("guilds/{guildId}/channels")] Task ModifyGuildChannelPositionsAsync([Path] Snowflake guildId, [Body] ModifyGuildChannelPositionParams[] args); @@ -153,7 +153,7 @@ internal interface IDiscordRestApi : IDisposable [Put("guilds/{guildId}/members/{userId}")] Task AddGuildMemberAsync([Path] Snowflake guildId, [Path] Snowflake userId, [Body] AddGuildMemberParams args); [Delete("guilds/{guildId}/members/{userId}")] - Task RemoveGuildMemberAsync([Path] Snowflake guildId, [Path] Snowflake userId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task RemoveGuildMemberAsync([Path] Snowflake guildId, [Path] Snowflake userId, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Patch("guilds/{guildId}/members/{userId}")] Task ModifyGuildMemberAsync([Path] Snowflake guildId, [Path] Snowflake userId, [Body] ModifyGuildMemberParams args); [Patch("guilds/{guildId}/members/@me/nick")] @@ -167,25 +167,25 @@ internal interface IDiscordRestApi : IDisposable [Get("guilds/{guildId}/bans")] Task GetGuildBansAsync([Path] Snowflake guildId); [Put("guilds/{guildId}/bans/{userId}")] - Task CreateGuildBanAsync([Path] Snowflake guildId, [Path] Snowflake userId, [QueryMap] CreateGuildBanParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task CreateGuildBanAsync([Path] Snowflake guildId, [Path] Snowflake userId, [QueryMap] CreateGuildBanParams args, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Delete("guilds/{guildId}/bans/{userId}")] - Task DeleteGuildBanAsync([Path] Snowflake guildId, [Path] Snowflake userId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task DeleteGuildBanAsync([Path] Snowflake guildId, [Path] Snowflake userId, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Get("guilds/{guildId}/roles")] Task GetGuildRolesAsync([Path] Snowflake guildId); [Post("guilds/{guildId}/roles")] - Task CreateGuildRoleAsync([Path] Snowflake guildId, [Body] CreateGuildRoleParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task CreateGuildRoleAsync([Path] Snowflake guildId, [Body] CreateGuildRoleParams args, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Delete("guilds/{guildId}/roles/{roleId}")] - Task DeleteGuildRoleAsync([Path] Snowflake guildId, [Path] Snowflake roleId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task DeleteGuildRoleAsync([Path] Snowflake guildId, [Path] Snowflake roleId, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Patch("guilds/{guildId}/roles/{roleId}")] - Task ModifyGuildRoleAsync([Path] Snowflake guildId, [Path] Snowflake roleId, [Body] ModifyGuildRoleParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task ModifyGuildRoleAsync([Path] Snowflake guildId, [Path] Snowflake roleId, [Body] ModifyGuildRoleParams args, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Patch("guilds/{guildId}/roles")] Task ModifyGuildRolePositionsAsync([Path] Snowflake guildId, [Body] ModifyGuildRolePositionParams[] args); [Get("guilds/{guildId}/prune")] Task GetGuildPruneCountAsync([Path] Snowflake guildId, [QueryMap] GuildPruneParams args); [Post("guilds/{guildId}/prune")] - Task PruneGuildMembersAsync([Path] Snowflake guildId, [QueryMap] GuildPruneParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task PruneGuildMembersAsync([Path] Snowflake guildId, [QueryMap] GuildPruneParams args, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Get("guilds/{guildId}/regions")] Task GetGuildVoiceRegionsAsync([Path] Snowflake guildId); @@ -217,7 +217,7 @@ internal interface IDiscordRestApi : IDisposable [Get("invites/{code}")] Task GetInviteAsync([Path] Utf8String code, [QueryMap] GetInviteParams args); [Delete("invites/{code}")] - Task DeleteInviteAsync([Path] Utf8String code, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task DeleteInviteAsync([Path] Utf8String code, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); // OAuth @@ -265,19 +265,19 @@ internal interface IDiscordRestApi : IDisposable Task GetWebhookAsync([Path] Snowflake webhookId, [Path] Utf8String webhookToken); [Post("channels/{channelId}/webhooks")] - Task CreateWebhookAsync([Path] Snowflake channelId, [Body] CreateWebhookParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task CreateWebhookAsync([Path] Snowflake channelId, [Body] CreateWebhookParams args, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Delete("webhooks/{webhookId}")] - Task DeleteWebhookAsync([Path] Snowflake webhookId, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task DeleteWebhookAsync([Path] Snowflake webhookId, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Delete("webhooks/{webhookId}/{webhookToken}")] [Header("Authorization", null)] - Task DeleteWebhookAsync([Path] Snowflake webhookId, [Path] Utf8String webhookToken, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task DeleteWebhookAsync([Path] Snowflake webhookId, [Path] Utf8String webhookToken, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Patch("webhooks/{webhookId}")] - Task ModifyWebhookAsync([Path] Snowflake webhookId, ModifyWebhookParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task ModifyWebhookAsync([Path] Snowflake webhookId, ModifyWebhookParams args, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Patch("webhooks/{webhookId}/{webhookToken}")] [Header("Authorization", null)] - Task ModifyWebhookAsync([Path] Snowflake webhookId, [Path] Utf8String webhookToken, ModifyWebhookParams args, [Header(WumpusRestClient.ReasonHeader)] string reason = null); + Task ModifyWebhookAsync([Path] Snowflake webhookId, [Path] Utf8String webhookToken, ModifyWebhookParams args, [Header(WumpusRestClient.ReasonHeader)] Utf8String reason = null); [Post("webhooks/{webhookId}/{webhookToken}")] [Header("Authorization", null)] diff --git a/src/Wumpus.Net.Rest/WumpusRestClient.cs b/src/Wumpus.Net.Rest/WumpusRestClient.cs index 74ebe8d..5575d73 100644 --- a/src/Wumpus.Net.Rest/WumpusRestClient.cs +++ b/src/Wumpus.Net.Rest/WumpusRestClient.cs @@ -69,7 +69,7 @@ public Task ReplaceChannelAsync(Snowflake channelId, ModifyChannelParam args.Validate(); return _api.ReplaceChannelAsync(channelId, args); } - public Task ModifyChannelAsync(Snowflake channelId, ModifyChannelParams args, string reason = null) + public Task ModifyChannelAsync(Snowflake channelId, ModifyChannelParams args, Utf8String reason = null) { Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotNull(args, nameof(args)); @@ -77,7 +77,7 @@ public Task ModifyChannelAsync(Snowflake channelId, ModifyChannelParams args.Validate(); return _api.ModifyChannelAsync(channelId, args, reason); } - public Task DeleteChannelAsync(Snowflake channelId, string reason = null) + public Task DeleteChannelAsync(Snowflake channelId, Utf8String reason = null) { Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); @@ -112,7 +112,7 @@ public Task ModifyMessageAsync(Snowflake channelId, Snowflake messageId args.Validate(); return _api.ModifyMessageAsync(channelId, messageId, args); } - public Task DeleteMessageAsync(Snowflake channelId, Snowflake messageId, string reason = null) + public Task DeleteMessageAsync(Snowflake channelId, Snowflake messageId, Utf8String reason = null) { Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotZero(messageId, nameof(messageId)); @@ -163,7 +163,7 @@ public Task DeleteAllReactionsAsync(Snowflake channelId, Snowflake messageId) return _api.DeleteAllReactionsAsync(channelId, messageId); } - public Task EditChannelPermissionsAsync(Snowflake channelId, Snowflake overwriteId, ModifyChannelPermissionsParams args, string reason = null) + public Task EditChannelPermissionsAsync(Snowflake channelId, Snowflake overwriteId, ModifyChannelPermissionsParams args, Utf8String reason = null) { Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotZero(overwriteId, nameof(overwriteId)); @@ -172,7 +172,7 @@ public Task EditChannelPermissionsAsync(Snowflake channelId, Snowflake overwrite args.Validate(); return _api.EditChannelPermissionsAsync(channelId, overwriteId, args, reason); } - public Task DeleteChannelPermissionsAsync(Snowflake channelId, Snowflake overwriteId, string reason = null) + public Task DeleteChannelPermissionsAsync(Snowflake channelId, Snowflake overwriteId, Utf8String reason = null) { Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotZero(overwriteId, nameof(overwriteId)); @@ -245,14 +245,14 @@ public Task GetGuildEmojiAsync(Snowflake guildId, Snowflake emojiId) Preconditions.NotZero(emojiId, nameof(emojiId)); return _api.GetGuildEmojiAsync(guildId, emojiId); } - public Task CreateGuildEmojiAsync(Snowflake guildId, CreateGuildEmojiParams args, string reason = null) + public Task CreateGuildEmojiAsync(Snowflake guildId, CreateGuildEmojiParams args, Utf8String reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); return _api.CreateGuildEmojiAsync(guildId, args, reason); } - public Task ModifyGuildEmojiAsync(Snowflake guildId, Snowflake emojiId, ModifyGuildEmojiParams args, string reason = null) + public Task ModifyGuildEmojiAsync(Snowflake guildId, Snowflake emojiId, ModifyGuildEmojiParams args, Utf8String reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(emojiId, nameof(emojiId)); @@ -260,7 +260,7 @@ public Task ModifyGuildEmojiAsync(Snowflake guildId, Snowflake emojiId, M Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); return _api.ModifyGuildEmojiAsync(guildId, emojiId, args, reason); } - public Task DeleteGuildEmojiAsync(Snowflake guildId, Snowflake emojiId, string reason = null) + public Task DeleteGuildEmojiAsync(Snowflake guildId, Snowflake emojiId, Utf8String reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(emojiId, nameof(emojiId)); @@ -292,7 +292,7 @@ public Task CreateGuildAsync(CreateGuildParams args) args.Validate(); return _api.CreateGuildAsync(args); } - public Task ModifyGuildAsync(Snowflake guildId, ModifyGuildParams args, string reason = null) + public Task ModifyGuildAsync(Snowflake guildId, ModifyGuildParams args, Utf8String reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); @@ -311,7 +311,7 @@ public Task GetGuildChannelsAsync(Snowflake guildId) Preconditions.NotZero(guildId, nameof(guildId)); return _api.GetGuildChannelsAsync(guildId); } - public Task CreateGuildChannelAsync(Snowflake guildId, CreateGuildChannelParams args, string reason = null) + public Task CreateGuildChannelAsync(Snowflake guildId, CreateGuildChannelParams args, Utf8String reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); @@ -349,7 +349,7 @@ public Task AddGuildMemberAsync(Snowflake guildId, Snowflake userId args.Validate(); return _api.AddGuildMemberAsync(guildId, userId, args); } - public Task RemoveGuildMemberAsync(Snowflake guildId, Snowflake userId, string reason = null) + public Task RemoveGuildMemberAsync(Snowflake guildId, Snowflake userId, Utf8String reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(userId, nameof(userId)); @@ -392,7 +392,7 @@ public Task GetGuildBansAsync(Snowflake guildId) Preconditions.NotZero(guildId, nameof(guildId)); return _api.GetGuildBansAsync(guildId); } - public Task CreateGuildBanAsync(Snowflake guildId, Snowflake userId, CreateGuildBanParams args, string reason = null) + public Task CreateGuildBanAsync(Snowflake guildId, Snowflake userId, CreateGuildBanParams args, Utf8String reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(userId, nameof(userId)); @@ -401,7 +401,7 @@ public Task CreateGuildBanAsync(Snowflake guildId, Snowflake userId, CreateGuild args.Validate(); return _api.CreateGuildBanAsync(guildId, userId, args, reason); } - public Task DeleteGuildBanAsync(Snowflake guildId, Snowflake userId, string reason = null) + public Task DeleteGuildBanAsync(Snowflake guildId, Snowflake userId, Utf8String reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(userId, nameof(userId)); @@ -414,7 +414,7 @@ public Task GetGuildRolesAsync(Snowflake guildId) Preconditions.NotZero(guildId, nameof(guildId)); return _api.GetGuildRolesAsync(guildId); } - public Task CreateGuildRoleAsync(Snowflake guildId, CreateGuildRoleParams args, string reason = null) + public Task CreateGuildRoleAsync(Snowflake guildId, CreateGuildRoleParams args, Utf8String reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); @@ -422,14 +422,14 @@ public Task CreateGuildRoleAsync(Snowflake guildId, CreateGuildRoleParams args.Validate(); return _api.CreateGuildRoleAsync(guildId, args, reason); } - public Task DeleteGuildRoleAsync(Snowflake guildId, Snowflake roleId, string reason = null) + public Task DeleteGuildRoleAsync(Snowflake guildId, Snowflake roleId, Utf8String reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(roleId, nameof(roleId)); Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); return _api.DeleteGuildRoleAsync(guildId, roleId, reason); } - public Task ModifyGuildRoleAsync(Snowflake guildId, Snowflake roleId, ModifyGuildRoleParams args, string reason = null) + public Task ModifyGuildRoleAsync(Snowflake guildId, Snowflake roleId, ModifyGuildRoleParams args, Utf8String reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotZero(roleId, nameof(roleId)); @@ -454,7 +454,7 @@ public Task GetGuildPruneCountAsync(Snowflake guildId, args.Validate(); return _api.GetGuildPruneCountAsync(guildId, args); } - public Task PruneGuildMembersAsync(Snowflake guildId, GuildPruneParams args, string reason = null) + public Task PruneGuildMembersAsync(Snowflake guildId, GuildPruneParams args, Utf8String reason = null) { Preconditions.NotZero(guildId, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); @@ -536,7 +536,7 @@ public Task GetInviteAsync(Utf8String code, GetInviteParams args) args.Validate(); return _api.GetInviteAsync(code, args); } - public Task DeleteInviteAsync(Utf8String code, string reason = null) + public Task DeleteInviteAsync(Utf8String code, Utf8String reason = null) { Preconditions.NotNullOrWhitespace(code, nameof(code)); Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); @@ -621,7 +621,7 @@ public Task GetWebhookAsync(Snowflake webhookId, Utf8String webhookToke return _api.GetWebhookAsync(webhookId, webhookToken); } - public Task CreateWebhookAsync(Snowflake channelId, CreateWebhookParams args, string reason = null) + public Task CreateWebhookAsync(Snowflake channelId, CreateWebhookParams args, Utf8String reason = null) { Preconditions.NotZero(channelId, nameof(channelId)); Preconditions.NotNull(args, nameof(args)); @@ -630,13 +630,13 @@ public Task CreateWebhookAsync(Snowflake channelId, CreateWebhookParams return _api.CreateWebhookAsync(channelId, args, reason); } - public Task DeleteWebhookAsync(Snowflake webhookId, string reason = null) + public Task DeleteWebhookAsync(Snowflake webhookId, Utf8String reason = null) { Preconditions.NotZero(webhookId, nameof(webhookId)); Preconditions.LengthLessThan(reason, MaxReasonHeaderLength, nameof(reason)); return _api.DeleteWebhookAsync(webhookId, reason); } - public Task DeleteWebhookAsync(Snowflake webhookId, Utf8String webhookToken, string reason = null) + public Task DeleteWebhookAsync(Snowflake webhookId, Utf8String webhookToken, Utf8String reason = null) { Preconditions.NotZero(webhookId, nameof(webhookId)); Preconditions.NotNullOrWhitespace(webhookToken, nameof(webhookToken)); @@ -644,7 +644,7 @@ public Task DeleteWebhookAsync(Snowflake webhookId, Utf8String webhookToken, str return _api.DeleteWebhookAsync(webhookId, webhookToken, reason); } - public Task ModifyWebhookAsync(Snowflake webhookId, ModifyWebhookParams args, string reason = null) + public Task ModifyWebhookAsync(Snowflake webhookId, ModifyWebhookParams args, Utf8String reason = null) { Preconditions.NotZero(webhookId, nameof(webhookId)); Preconditions.NotNull(args, nameof(args)); @@ -652,7 +652,7 @@ public Task ModifyWebhookAsync(Snowflake webhookId, ModifyWebhookParams args.Validate(); return _api.ModifyWebhookAsync(webhookId, args, reason); } - public Task ModifyWebhookAsync(Snowflake webhookId, Utf8String webhookToken, ModifyWebhookParams args, string reason = null) + public Task ModifyWebhookAsync(Snowflake webhookId, Utf8String webhookToken, ModifyWebhookParams args, Utf8String reason = null) { Preconditions.NotZero(webhookId, nameof(webhookId)); Preconditions.NotNullOrWhitespace(webhookToken, nameof(webhookToken));