Browse Source

Pass token to /gateway

tags/docs-0.9
Brandon Smith 9 years ago
parent
commit
3c181c5740
2 changed files with 13 additions and 17 deletions
  1. +1
    -1
      src/Discord.Net/API/DiscordAPI.cs
  2. +12
    -16
      src/Discord.Net/DiscordClient.cs

+ 1
- 1
src/Discord.Net/API/DiscordAPI.cs View File

@@ -17,7 +17,7 @@ namespace Discord.API
}

//Auth
public Task<APIResponses.Gateway> GetWebSocket()
public Task<APIResponses.Gateway> GetWebSocketEndpoint()
=> _http.Get<APIResponses.Gateway>(Endpoints.Gateway);
public async Task<APIResponses.AuthRegister> LoginAnonymous(string username)
{


+ 12
- 16
src/Discord.Net/DiscordClient.cs View File

@@ -514,25 +514,21 @@ namespace Discord
public async Task<string> ConnectInternal(string emailOrUsername, string password, string token)
{
bool success = false;
string url = null;

await Disconnect();
_blockEvent.Reset();
_disconnectToken = new CancellationTokenSource();

string url = (await _api.GetWebSocket()).Url;

if (token != null)
{
try
{
//Login using cached token
await _webSocket.ConnectAsync(url);
if (_isDebugMode)
RaiseOnDebugMessage(DebugMessageType.Connection, $"DataSocket connected.");
_http.Token = token;

await _webSocket.Login(_http.Token);
url = (await _api.GetWebSocketEndpoint()).Url;
if (_isDebugMode)
RaiseOnDebugMessage(DebugMessageType.Connection, $"DataSocket got token.");
RaiseOnDebugMessage(DebugMessageType.Connection, $"DataSocket connected.");
success = true;
}
catch (InvalidOperationException) //Bad Token
@@ -545,9 +541,6 @@ namespace Discord
}
if (!success)
{
//Open websocket while we wait for login response
Task socketTask = _webSocket.ConnectAsync(url);

if (password != null) //Normal Login
{
var response = await _api.Login(emailOrUsername, password);
@@ -562,16 +555,16 @@ namespace Discord
RaiseOnDebugMessage(DebugMessageType.Connection, $"DataSocket generated anonymous token.");
token = response.Token;
}
_http.Token = token;

//Wait for websocket to finish connecting, then send token
await socketTask;
await _webSocket.Login(_http.Token);
_http.Token = token;
url = (await _api.GetWebSocketEndpoint()).Url;
success = true;
}

if (success)
{
await _webSocket.ConnectAsync(url);
await _webSocket.Login(token);

if (_config.UseMessageQueue)
_mainTask = MessageQueueLoop();
else
@@ -600,7 +593,10 @@ namespace Discord
_isConnected = true;
}
else
{
token = null;
_http.Token = null;
}
return token;
}
/// <summary> Disconnects from the Discord server, canceling any pending requests. </summary>


Loading…
Cancel
Save