예제 #1
0
		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();
		}
예제 #2
0
        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();
        }