Pass token to /gateway
This commit is contained in:
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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);
|
_http.Token = token;
|
||||||
|
url = (await _api.GetWebSocketEndpoint()).Url;
|
||||||
if (_isDebugMode)
|
if (_isDebugMode)
|
||||||
RaiseOnDebugMessage(DebugMessageType.Connection, $"DataSocket connected.");
|
RaiseOnDebugMessage(DebugMessageType.Connection, $"DataSocket connected.");
|
||||||
_http.Token = token;
|
|
||||||
|
|
||||||
await _webSocket.Login(_http.Token);
|
|
||||||
if (_isDebugMode)
|
|
||||||
RaiseOnDebugMessage(DebugMessageType.Connection, $"DataSocket got token.");
|
|
||||||
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
|
_http.Token = token;
|
||||||
await socketTask;
|
url = (await _api.GetWebSocketEndpoint()).Url;
|
||||||
await _webSocket.Login(_http.Token);
|
|
||||||
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>
|
||||||
|
|||||||
Reference in New Issue
Block a user