public async Task Login(string token) { var cancelToken = _disconnectToken.Token; _connectWaitOnLogin.Reset(); _connectWaitOnLogin2.Reset(); TextWebSocketCommands.Login msg = new TextWebSocketCommands.Login(); msg.Payload.Token = token; msg.Payload.Properties["$os"] = ""; msg.Payload.Properties["$browser"] = ""; msg.Payload.Properties["$device"] = "Discord.Net"; msg.Payload.Properties["$referrer"] = ""; msg.Payload.Properties["$referring_domain"] = ""; await SendMessage(msg, cancelToken); try { if (!_connectWaitOnLogin.Wait(_timeout, cancelToken)) //Waiting on READY message throw new Exception("No reply from Discord server"); } catch (OperationCanceledException) { throw new InvalidOperationException("Bad Token"); } try { _connectWaitOnLogin2.Wait(cancelToken); } //Waiting on READY handler catch (OperationCanceledException) { return; } if (_isDebug) RaiseOnDebugMessage(DebugMessageType.Connection, $"Logged in."); SetConnected(); }
public async Task Login(string token) { var cancelToken = _disconnectToken.Token; _connectWaitOnLogin.Reset(); _connectWaitOnLogin2.Reset(); TextWebSocketCommands.Login msg = new TextWebSocketCommands.Login(); msg.Payload.Token = token; msg.Payload.Properties["$os"] = ""; msg.Payload.Properties["$browser"] = ""; msg.Payload.Properties["$device"] = "Discord.Net"; msg.Payload.Properties["$referrer"] = ""; msg.Payload.Properties["$referring_domain"] = ""; await SendMessage(msg, cancelToken); try { if (!_connectWaitOnLogin.Wait(_timeout, cancelToken)) //Waiting on READY message { throw new Exception("No reply from Discord server"); } } catch (OperationCanceledException) { throw new InvalidOperationException("Bad Token"); } try { _connectWaitOnLogin2.Wait(cancelToken); } //Waiting on READY handler catch (OperationCanceledException) { return; } if (_isDebug) { RaiseOnDebugMessage(DebugMessageType.Connection, $"Logged in."); } SetConnected(); }