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 RequestQueue _requestQueue;
|
||||||
private readonly JsonSerializer _serializer;
|
private readonly JsonSerializer _serializer;
|
||||||
private IRestClient _restClient;
|
private readonly IRestClient _restClient;
|
||||||
private CancellationToken _cancelToken;
|
private CancellationToken _cancelToken;
|
||||||
|
|
||||||
public TokenType AuthTokenType { get; private set; }
|
public TokenType AuthTokenType { get; private set; }
|
||||||
@@ -68,15 +68,26 @@ namespace Discord.API
|
|||||||
}
|
}
|
||||||
public async Task Login(LoginParams args, CancellationToken cancelToken)
|
public async Task Login(LoginParams args, CancellationToken cancelToken)
|
||||||
{
|
{
|
||||||
var response = await Send<LoginResponse>("POST", "auth/login", args).ConfigureAwait(false);
|
|
||||||
|
|
||||||
AuthTokenType = TokenType.User;
|
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);
|
_restClient.SetHeader("authorization", response.Token);
|
||||||
}
|
}
|
||||||
public async Task Logout()
|
public async Task Logout()
|
||||||
{
|
{
|
||||||
await _requestQueue.Clear().ConfigureAwait(false);
|
await _requestQueue.Clear().ConfigureAwait(false);
|
||||||
_restClient = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Core
|
//Core
|
||||||
@@ -527,7 +538,7 @@ namespace Discord.API
|
|||||||
Preconditions.NotEqual(userId, 0, nameof(userId));
|
Preconditions.NotEqual(userId, 0, nameof(userId));
|
||||||
Preconditions.NotNull(args, nameof(args));
|
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
|
//Guild Roles
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
public enum GlobalBucket
|
public enum GlobalBucket
|
||||||
{
|
{
|
||||||
General,
|
General,
|
||||||
|
Login,
|
||||||
DirectMessage
|
DirectMessage
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
SendEditMessage,
|
SendEditMessage,
|
||||||
DeleteMessage,
|
DeleteMessage,
|
||||||
DeleteMessages,
|
DeleteMessages,
|
||||||
|
ModifyMember,
|
||||||
Nickname
|
Nickname
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ namespace Discord.Net.Rest
|
|||||||
{
|
{
|
||||||
//Globals
|
//Globals
|
||||||
case GlobalBucket.General: return new RequestQueueBucket(this, bucket, int.MaxValue, 0); //Catch-all
|
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);
|
case GlobalBucket.DirectMessage: return new RequestQueueBucket(this, bucket, 5, 5);
|
||||||
|
|
||||||
default: throw new ArgumentException($"Unknown global bucket: {bucket}", nameof(bucket));
|
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.SendEditMessage: return new RequestQueueBucket(this, bucket, guildId, 5, 5);
|
||||||
case GuildBucket.DeleteMessage: return new RequestQueueBucket(this, bucket, guildId, 5, 1);
|
case GuildBucket.DeleteMessage: return new RequestQueueBucket(this, bucket, guildId, 5, 1);
|
||||||
case GuildBucket.DeleteMessages: return new RequestQueueBucket(this, bucket, guildId, 1, 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);
|
case GuildBucket.Nickname: return new RequestQueueBucket(this, bucket, guildId, 1, 1);
|
||||||
|
|
||||||
default: throw new ArgumentException($"Unknown guild bucket: {bucket}", nameof(bucket));
|
default: throw new ArgumentException($"Unknown guild bucket: {bucket}", nameof(bucket));
|
||||||
|
|||||||
Reference in New Issue
Block a user