Added a couple of buckets, fixed logging out
This commit is contained in:
@@ -23,7 +23,7 @@ namespace Discord.API
|
||||
|
||||
private readonly RequestQueue _requestQueue;
|
||||
private readonly JsonSerializer _serializer;
|
||||
private IRestClient _restClient;
|
||||
private readonly IRestClient _restClient;
|
||||
private CancellationToken _cancelToken;
|
||||
|
||||
public TokenType AuthTokenType { get; private set; }
|
||||
@@ -68,15 +68,26 @@ namespace Discord.API
|
||||
}
|
||||
public async Task Login(LoginParams args, CancellationToken cancelToken)
|
||||
{
|
||||
var response = await Send<LoginResponse>("POST", "auth/login", args).ConfigureAwait(false);
|
||||
|
||||
AuthTokenType = TokenType.User;
|
||||
_restClient.SetHeader("authorization", null);
|
||||
_cancelToken = cancelToken;
|
||||
|
||||
LoginResponse response;
|
||||
try
|
||||
{
|
||||
response = await Send<LoginResponse>("POST", "auth/login", args, GlobalBucket.Login).ConfigureAwait(false);
|
||||
}
|
||||
catch
|
||||
{
|
||||
_cancelToken = CancellationToken.None;
|
||||
throw;
|
||||
}
|
||||
|
||||
_restClient.SetHeader("authorization", response.Token);
|
||||
}
|
||||
public async Task Logout()
|
||||
{
|
||||
await _requestQueue.Clear().ConfigureAwait(false);
|
||||
_restClient = null;
|
||||
}
|
||||
|
||||
//Core
|
||||
@@ -527,7 +538,7 @@ namespace Discord.API
|
||||
Preconditions.NotEqual(userId, 0, nameof(userId));
|
||||
Preconditions.NotNull(args, nameof(args));
|
||||
|
||||
await Send("PATCH", $"guilds/{guildId}/members/{userId}", args).ConfigureAwait(false);
|
||||
await Send("PATCH", $"guilds/{guildId}/members/{userId}", args, GuildBucket.ModifyMember, guildId).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
//Guild Roles
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
public enum GlobalBucket
|
||||
{
|
||||
General,
|
||||
Login,
|
||||
DirectMessage
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
SendEditMessage,
|
||||
DeleteMessage,
|
||||
DeleteMessages,
|
||||
ModifyMember,
|
||||
Nickname
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,6 +64,7 @@ namespace Discord.Net.Rest
|
||||
{
|
||||
//Globals
|
||||
case GlobalBucket.General: return new RequestQueueBucket(this, bucket, int.MaxValue, 0); //Catch-all
|
||||
case GlobalBucket.Login: return new RequestQueueBucket(this, bucket, 1, 1); //TODO: Is this actual logins or token validations too?
|
||||
case GlobalBucket.DirectMessage: return new RequestQueueBucket(this, bucket, 5, 5);
|
||||
|
||||
default: throw new ArgumentException($"Unknown global bucket: {bucket}", nameof(bucket));
|
||||
@@ -77,6 +78,7 @@ namespace Discord.Net.Rest
|
||||
case GuildBucket.SendEditMessage: return new RequestQueueBucket(this, bucket, guildId, 5, 5);
|
||||
case GuildBucket.DeleteMessage: return new RequestQueueBucket(this, bucket, guildId, 5, 1);
|
||||
case GuildBucket.DeleteMessages: return new RequestQueueBucket(this, bucket, guildId, 1, 1);
|
||||
case GuildBucket.ModifyMember: return new RequestQueueBucket(this, bucket, guildId, 10, 10); //TODO: Is this all users or just roles?
|
||||
case GuildBucket.Nickname: return new RequestQueueBucket(this, bucket, guildId, 1, 1);
|
||||
|
||||
default: throw new ArgumentException($"Unknown guild bucket: {bucket}", nameof(bucket));
|
||||
|
||||
Reference in New Issue
Block a user