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 //Auth
public Task<APIResponses.Gateway> GetWebSocket()
public Task<APIResponses.Gateway> GetWebSocketEndpoint()
=> _http.Get<APIResponses.Gateway>(Endpoints.Gateway); => _http.Get<APIResponses.Gateway>(Endpoints.Gateway);
public async Task<APIResponses.AuthRegister> LoginAnonymous(string username) 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) public async Task<string> ConnectInternal(string emailOrUsername, string password, string token)
{ {
bool success = false; bool success = false;
string url = null;

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


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

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

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

if (password != null) //Normal Login if (password != null) //Normal Login
{ {
var response = await _api.Login(emailOrUsername, password); var response = await _api.Login(emailOrUsername, password);
@@ -562,16 +555,16 @@ namespace Discord
RaiseOnDebugMessage(DebugMessageType.Connection, $"DataSocket generated anonymous token."); RaiseOnDebugMessage(DebugMessageType.Connection, $"DataSocket generated anonymous token.");
token = response.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; success = true;
} }

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

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


Loading…
Cancel
Save