feature: Add invite maxAge check before attempting to create the invite (#1140)

* Add maxage check & improve maxage parameter check

* Change InvalidOperation to ArgumentOoR

* Remove HasValue check
...since it does it implicitly already.

* Add parameter names & better wording for invite OoR

* Move maxAge check to DiscordRestApiClient for consistency
This commit is contained in:
Still Hsu
2018-10-21 00:45:05 +08:00
committed by Christopher F
parent f549da50e0
commit 649a779c23
2 changed files with 9 additions and 3 deletions

View File

@@ -978,6 +978,8 @@ namespace Discord.API
Preconditions.NotNull(args, nameof(args));
Preconditions.AtLeast(args.MaxAge, 0, nameof(args.MaxAge));
Preconditions.AtLeast(args.MaxUses, 0, nameof(args.MaxUses));
Preconditions.AtMost(args.MaxAge, 86400, nameof(args.MaxAge),
"The maximum age of an invite must be less than or equal to a day (86400 seconds).");
options = RequestOptions.CreateOrClone(options);
var ids = new BucketIds(channelId: channelId);

View File

@@ -76,9 +76,13 @@ namespace Discord.Rest
public static async Task<RestInviteMetadata> CreateInviteAsync(IGuildChannel channel, BaseDiscordClient client,
int? maxAge, int? maxUses, bool isTemporary, bool isUnique, RequestOptions options)
{
var args = new CreateChannelInviteParams { IsTemporary = isTemporary, IsUnique = isUnique };
args.MaxAge = maxAge.GetValueOrDefault(0);
args.MaxUses = maxUses.GetValueOrDefault(0);
var args = new API.Rest.CreateChannelInviteParams
{
IsTemporary = isTemporary,
IsUnique = isUnique,
MaxAge = maxAge ?? 0,
MaxUses = maxUses ?? 0
};
var model = await client.ApiClient.CreateChannelInviteAsync(channel.Id, args, options).ConfigureAwait(false);
return RestInviteMetadata.Create(client, null, channel, model);
}