/// <summary> /// Test sign in callback /// </summary> /// <param name="accountInfo"></param> /// <param name="error"></param> private void SignInCallback(AccountInfoPacket accountInfo, string error) { if (accountInfo == null) { logger.Error(error); return; } logger.Debug($"Signed in successfully as {accountInfo.Username}"); logger.Debug("Finding games..."); Mst.Client.Matchmaker.FindGames((games) => { if (games.Count == 0) { logger.Error("No test game found"); return; } logger.Debug($"Found {games.Count} games"); // Get first game fromlist GameInfoPacket firstGame = games.First(); // Let's try to get access data for room we want to connect to GetRoomAccess(firstGame.Id); }); }
/// <summary> /// Sends a generic login request /// </summary> public void SignIn(MstProperties data, SignInCallback callback, IClientSocket connection) { Logs.Debug("Signing in..."); if (!connection.IsConnected) { callback.Invoke(null, "Not connected to server"); return; } IsNowSigningIn = true; // We first need to get an aes key // so that we can encrypt our login data Mst.Security.GetAesKey(aesKey => { if (aesKey == null) { IsNowSigningIn = false; callback.Invoke(null, "Failed to log in due to security issues"); return; } var encryptedData = Mst.Security.EncryptAES(data.ToBytes(), aesKey); connection.SendMessage((short)MstMessageCodes.SignInRequest, encryptedData, (status, response) => { IsNowSigningIn = false; if (status != ResponseStatus.Success) { ClearAuthToken(); callback.Invoke(null, response.AsString("Unknown error")); return; } AccountInfo = response.Deserialize(new AccountInfoPacket()); IsSignedIn = true; if (RememberMe) { SaveAuthToken(AccountInfo.Token); } else { ClearAuthToken(); } callback.Invoke(AccountInfo, null); OnSignedInEvent?.Invoke(); }); }, connection); }
/// <summary> /// Initiates a log out. In the process, disconnects and connects /// back to the server to ensure no state data is left on the server. /// </summary> public void SignOut(IClientSocket connection, bool permanent = false) { if (!IsSignedIn) { return; } IsSignedIn = false; AccountInfo = null; if (permanent) { ClearAuthToken(); } if ((connection != null) && connection.IsConnected) { connection.Reconnect(); } OnSignedOutEvent?.Invoke(); }