示例#1
0
            public UserValidationResult(string json, GetPlayerInfoResponse playerInfo)
            {
                var user = SteamPlayerMapping.GetSteamUserFromSteamObject(json);

//                if (user.profilestate) ;

                if (user.communityvisibilitystate != 3)
                {
                    Error             = "Profile is not public";
                    ShouldReviceItems = false;
                    return;
                }

                if (playerInfo.DataCase == GetPlayerInfoResponse.DataOneofCase.Error)
                {
                    Error             = playerInfo.Error.Message;
                    ShouldReviceItems = false;
                    return;
                }

                if (playerInfo.PlayerInfo.IsLimitedAccount)
                {
                    Error             = "Account is limit";
                    ShouldReviceItems = false;
                    return;
                }

                if (playerInfo.PlayerInfo.TradeBanState != "None")
                {
                    Error             = "Tradebanned account";
                    ShouldReviceItems = false;
                    return;
                }

                var memberSince = DateTimeOffset.FromUnixTimeSeconds(long.Parse(playerInfo.PlayerInfo.MemberSince));
                var diff        = DateTime.UtcNow - memberSince;

                if (diff < TimeSpan.FromDays(90))
                {
                    Error             = "The account is to new";
                    ShouldReviceItems = false;
                    return;
                }

                ShouldReviceItems = true;
            }
示例#2
0
        private async Task OnSignedIn(CookieSignedInContext ctx)
        {
            var userJson = ctx.HttpContext.Items["User"];
            var steamId  = ctx.Principal.GetSteamId();

            var steamApiKey = Configuration.GetSection("Steam").GetSection("ApiKey").Value;
            var url         = $"https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key={steamApiKey}&steamids={steamId}";

            if (userJson == null)
            {
                userJson = await new HttpClient().GetStringAsync(url);
            }

            DatabaseModel.User user;
            try
            {
                var res = new Regex(@"(https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/|\.jpg)")
                          .Replace(userJson.ToString(), "");
                user = SteamPlayerMapping.GetUserFromSteamObject(res);
            }
            catch (Exception e)
            {
                throw new InvalidJsonFromSteamException("Can't convert from steamJsonPlayer data to a user", e);
            }


            if (steamId != user.SteamId)
            {
                throw new ArgumentException("SteamId is not the same!");
            }
            var firstTimeUser = await IoC.Container.Resolve <IUserService>().UserLoggedIn(user);

            if (firstTimeUser)
            {
                UserValidationResult userValidationResult = new UserValidationResult
                {
                    Error             = "Unknown error",
                    ShouldReviceItems = false
                };

                try
                {
                    var playerInfo = await IoC.Container.Resolve <ISteamService>().GetPlayerInfoAsync(user.SteamId);

                    userValidationResult = new UserValidationResult(userJson.ToString(), playerInfo);
                    if (userValidationResult.ShouldReviceItems)
                    {
                        var userToSendFrom = await IoC.Container.Resolve <IUserService>().FindAsync(Constants.OurRandomSteamId);

                        var itemToSend = await GetItemToSend(userToSendFrom);

                        if (itemToSend.Count != 0)
                        {
                            await SendItems(user, itemToSend, userToSendFrom);
                        }
                        else
                        {
                            userValidationResult.Error             = "Out of items";
                            userValidationResult.ShouldReviceItems = false;
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }

                var redirectUrl =
                    $"{ctx.Request.Scheme}://{ctx.Request.Host.Host}/coinflip/create?success={userValidationResult.ShouldReviceItems.ToString()}&reason={userValidationResult.Error}";

                ctx.Response.Redirect(redirectUrl);
                var ste = ctx.HttpContext.Response.Body;
                var s   = new StreamWriter(ste);
                await s.WriteAsync("");

                await s.FlushAsync();

                ctx.Response.Body = ste;
            }
        }