byte[] IAuthenticationWebServiceContract.LoginSteam(byte[] data)
        {
            try
            {
                using (var bytes = new MemoryStream(data))
                {
                    var steamId   = StringProxy.Deserialize(bytes);
                    var authToken = StringProxy.Deserialize(bytes);
                    var machineId = StringProxy.Deserialize(bytes);

                    var view = OnLoginSteam(steamId, authToken, machineId);
                    using (var outBytes = new MemoryStream())
                    {
                        MemberAuthenticationResultViewProxy.Serialize(outBytes, view);
                        return(outBytes.ToArray());
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error("Unable to handle LoginSteam request:");
                Log.Error(ex);
                return(null);
            }
        }
Ejemplo n.º 2
0
        public byte[] LoginSteam(byte[] data)
        {
            var inputStream = new MemoryStream(data);

            var steamId   = StringProxy.Deserialize(inputStream);
            var authToken = StringProxy.Deserialize(inputStream);
            var machineId = StringProxy.Deserialize(inputStream);

            var outputStream = new MemoryStream();

            if (userData.ContainsKey(steamId) && userData[steamId] != null)
            {
                var instance = new MemberAuthenticationResultView {
                    MemberAuthenticationResult = MemberAuthenticationResult.Ok,
                    MemberView           = userData[steamId],
                    PlayerStatisticsView = playerStatistics[steamId],
                    ServerTime           = DateTime.Now,
                    IsAccountComplete    = true,
                    AuthToken            = Convert.ToBase64String(Encoding.UTF8.GetBytes(steamId))
                };

                MemberAuthenticationResultViewProxy.Serialize(outputStream, instance);
            }
            else
            {
                var r    = new Random((int)DateTime.Now.Ticks);
                var Cmid = r.Next(1000000, 9999999);

                var newMemberView = new MemberView {
                    PublicProfile = new PublicProfileView {
                        Cmid               = Cmid,
                        Name               = "Player Name",
                        IsChatDisabled     = false,
                        AccessLevel        = MemberAccessLevel.Default,
                        GroupTag           = "",
                        LastLoginDate      = DateTime.Now,
                        EmailAddressStatus = EmailAddressStatus.Verified,
                        FacebookId         = "-1"
                    },
                    MemberWallet = new MemberWalletView {
                        Cmid    = Cmid,
                        Credits = 2000,
                        Points  = 2000
                    }
                };

                var newPlayerStatisticsView = new PlayerStatisticsView {
                    Cmid             = Cmid,
                    PersonalRecord   = new PlayerPersonalRecordStatisticsView(),
                    WeaponStatistics = new PlayerWeaponStatisticsView()
                };

                var instance = new MemberAuthenticationResultView {
                    MemberAuthenticationResult = MemberAuthenticationResult.Ok,
                    MemberView           = newMemberView,
                    PlayerStatisticsView = newPlayerStatisticsView,
                    ServerTime           = DateTime.Now,
                    IsAccountComplete    = true,
                    AuthToken            = Convert.ToBase64String(Encoding.UTF8.GetBytes(steamId))
                };

                userData[steamId]         = newMemberView;
                playerStatistics[steamId] = newPlayerStatisticsView;

                MemberAuthenticationResultViewProxy.Serialize(outputStream, instance);

                UpdatePlayerData();
            }

            return(outputStream.ToArray());
        }