Browse Source

Added a couple of buckets, fixed logging out

tags/1.0-rc
RogueException 9 years ago
parent
commit
50392d3688
4 changed files with 20 additions and 5 deletions
  1. +16
    -5
      src/Discord.Net/API/DiscordAPIClient.cs
  2. +1
    -0
      src/Discord.Net/Net/Rest/RequestQueue/GlobalBucket.cs
  3. +1
    -0
      src/Discord.Net/Net/Rest/RequestQueue/GuildBucket.cs
  4. +2
    -0
      src/Discord.Net/Net/Rest/RequestQueue/RequestQueue.cs

+ 16
- 5
src/Discord.Net/API/DiscordAPIClient.cs View File

@@ -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


+ 1
- 0
src/Discord.Net/Net/Rest/RequestQueue/GlobalBucket.cs View File

@@ -3,6 +3,7 @@
public enum GlobalBucket
{
General,
Login,
DirectMessage
}
}

+ 1
- 0
src/Discord.Net/Net/Rest/RequestQueue/GuildBucket.cs View File

@@ -5,6 +5,7 @@
SendEditMessage,
DeleteMessage,
DeleteMessages,
ModifyMember,
Nickname
}
}

+ 2
- 0
src/Discord.Net/Net/Rest/RequestQueue/RequestQueue.cs View File

@@ -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));


Loading…
Cancel
Save