Пример #1
0
        public async Task <bool> GetUserByIdAsync(ulong steamId, ApplicationPlayerDetails toFill)
        {
            if (!IsApiKeySet())
            {
                return(false);
            }

            toFill.SteamId          = steamId;
            toFill.EverythingLoaded = false;

            try
            {
                // Player profile
                var playerSummaryResponse = await _steamUser.GetPlayerSummaryAsync(steamId);

                toFill.PlayerProfile = playerSummaryResponse.Data;

                // Friend list
                var friendListResponse = await _steamUser.GetFriendsListAsync(steamId);

                toFill.Friends = friendListResponse.Data.Select(x => x.SteamId).ToList();

                // Owned games
                var ownedGamesResponse = await _steamPlayerService.GetOwnedGamesAsync(steamId);

                toFill.OwnedGames       = ownedGamesResponse.Data;
                toFill.EverythingLoaded = true;

                return(true);
            }
            catch (SteamIdNotConstructedException)
            {
                return(false);
            }
        }
Пример #2
0
        public async Task GetFriendsListAsync_Should_Succeed()
        {
            var response = await steamInterface.GetFriendsListAsync(76561198050013009);

            Assert.NotNull(response);
            Assert.NotNull(response.Data);
        }
Пример #3
0
        public string SendRequest()
        {
            // this will map to ISteamUser/GetPlayerSummaries method in the Steam Web API
            // see PlayerSummaryResultContainer.cs for response documentation
            var playerSummaryResponse     = /*await */ steamInterface.GetFriendsListAsync();//GetPlayerSummaryAsync("schattencheg");
            var playerSummaryData         = playerSummaryResponse.Data;
            var playerSummaryLastModified = playerSummaryResponse.LastModified;

            // this will map to ISteamUser/GetFriendsListAsync method in the Steam Web API
            // see FriendListResultContainer.cs for response documentation
            var friendsListResponse = await steamInterface.GetFriendsListAsync("schattencheg");

            var friendsList = friendsListResponse.Data;

            return("");
        }
Пример #4
0
        private static async Task ParseNewSteamIds()
        {
            try {
                List <string> steamIdsToParse = FetchSteamIds(true);

                using (BatchQueryBuilder batchQuerybuilder = new BatchQueryBuilder(_config.ConnString)) {
                    SteamUser steamInterface = new SteamUser(_config.SteamWebApiKey);

                    foreach (string i in steamIdsToParse)
                    {
                        if (i == "0")
                        {
                            continue;
                        }
                        try {
                            Console.WriteLine($"Parsing Steam ID {i}");
                            PlayerSummaryModel playerSummaryResponseData = (await steamInterface.GetPlayerSummaryAsync(ulong.Parse(i))).Data;
                            IReadOnlyCollection <PlayerBansModel> playerBansResponseData    = (await steamInterface.GetPlayerBansAsync(ulong.Parse(i))).Data;
                            IReadOnlyCollection <FriendModel>     playerFriendsResponseData = null;
                            if (playerSummaryResponseData.ProfileVisibility == ProfileVisibility.Public)
                            {
                                playerFriendsResponseData = (await steamInterface.GetFriendsListAsync(ulong.Parse(i))).Data;
                            }
                            batchQuerybuilder.AppendSqlCommand(new MySqlCommand($"UPDATE FamilyRpServerAccess.ParsedSteamAccounts SET SteamCreated = '{playerSummaryResponseData.AccountCreatedDate:s}', RowUpdated = NOW()," +
                                                                                $"SteamName = '{MySqlHelper.EscapeString( Utf8ToAscii( playerSummaryResponseData.Nickname ) )}'," +
                                                                                $"SteamVisibility = '{playerSummaryResponseData.ProfileVisibility}'," +
                                                                                $"NumSteamFriends = {playerFriendsResponseData?.Count ?? 0}," +
                                                                                $"SteamBans = {playerBansResponseData.First().NumberOfGameBans + (playerBansResponseData.First().CommunityBanned ? 1 : 0) + playerBansResponseData.First().NumberOfVACBans}," +
                                                                                "isParsed = 1 " +
                                                                                $"WHERE SteamId = {i};"));
                            AuditLog(null, "Steam", "Parsed", "", i, batchQuerybuilder);
                        }
                        catch (Exception ex) {
                            if (!(ex.ToString().Contains("System.Net.Http.HttpRequestException") && ex.ToString().Contains("Unauthorized")))
                            {
                                Console.WriteLine($"Could not fetch Steam ID {i}: {ex}");
                            }
                        }
                    }
                }
            }
            catch (Exception ex) {
                Console.WriteLine($"{ex}");
            }
        }
Пример #5
0
        private static async Task ParseNewSteamIds()
        {
            List <string> SteamIdsToParse = FetchSteamIds(true);

            using (BatchQueryBuilder batchQuerybuilder = new BatchQueryBuilder(config.ConnString))
            {
                var steamInterface = new SteamUser(config.SteamWebApiKey, null);

                foreach (string i in SteamIdsToParse)
                {
                    if (i == "0")
                    {
                        continue;
                    }
                    try
                    {
                        Console.WriteLine($"Parsing Steam ID {i}");
                        var playerSummaryResponseData = (await steamInterface.GetPlayerSummaryAsync(UInt64.Parse(i))).Data;
                        var playerBansResponseData    = (await steamInterface.GetPlayerBansAsync(UInt64.Parse(i))).Data;
                        IReadOnlyCollection <FriendModel> playerFriendsResponseData = null;
                        if (playerSummaryResponseData.ProfileVisibility == Steam.Models.SteamCommunity.ProfileVisibility.Public)
                        {
                            playerFriendsResponseData = (await steamInterface.GetFriendsListAsync(UInt64.Parse(i))).Data;
                        }
                        batchQuerybuilder.AppendSqlCommand(new MySqlCommand($"UPDATE FamilyRpServerAccess.ParsedSteamAccounts SET SteamCreated = '{playerSummaryResponseData.AccountCreatedDate}',RowUpdated = NOW()," +
                                                                            $"SteamName = '{MySqlHelper.EscapeString(UTF8toASCII(playerSummaryResponseData.Nickname))}'," +
                                                                            $"SteamVisibility = '{playerSummaryResponseData.ProfileVisibility}'," +
                                                                            $"NumSteamFriends = {(playerFriendsResponseData != null ? playerFriendsResponseData.Count : 0)}," +
                                                                            $"SteamBans = {playerBansResponseData.First().NumberOfGameBans + (playerBansResponseData.First().CommunityBanned ? 1 : 0) + playerBansResponseData.First().NumberOfVACBans}," +
                                                                            $"isParsed = 1 " +
                                                                            $"WHERE SteamId = {i};"));
                        AuditLog(null, "Steam", "Parsed", "", i, batchQuerybuilder);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"Could not fetch Steam ID {i}: {ex}");
                    }
                }
            }
        }
Пример #6
0
        /// <summary>
        /// Will call steam API to update user details
        /// </summary>
        public async void UpdateUser(object sender, RoutedEventArgs e)
        {
            CurrentUser currentUser           = new CurrentUser();
            var         steamInterface        = new SteamUser(APIKey);
            var         playerSummaryResponse = await steamInterface.GetPlayerSummaryAsync(userKey);

            var playerSummaryData = playerSummaryResponse.Data;

            currentUser.AvatarUrl = playerSummaryResponse.Data.AvatarFullUrl;
            Debug.Print("AVATAR: " + currentUser.AvatarUrl);
            currentUser.CreationDate = playerSummaryResponse.Data.AccountCreatedDate;
            currentUser.ProfileUrl   = playerSummaryResponse.Data.ProfileUrl;

            var accountCreationDate = playerSummaryData.AccountCreatedDate;
            var nickname            = playerSummaryData.Nickname;

            Debug.Print("Account creation date: " + accountCreationDate.ToString());
            Debug.Print("Username: "******"Friend: " + friend.SteamId.ToString());
            }

            var userStats  = new SteamUserStats(APIKey);
            var steamStats = new SteamApps(APIKey);

            AvatarImage.Source           = new BitmapImage(new Uri(currentUser.AvatarUrl));
            UserNameText.Text            = "Username: "******"Account creation date: " + currentUser.CreationDate;

            File.Delete("SavedUser" + username + ".xml");
            SaveSerializeObject <CurrentUser>(currentUser, "SavedUser" + username + ".xml");
        }
Пример #7
0
        public async Task OpenFriendsOfAsync(ulong steamId)
        {
            HashSet <ulong> steamIds = new HashSet <ulong>(); // Initialize an empty set for friends.

            // if the steamId isn't mapped with friends and it isn't private
            if (!mappedFriends.ContainsKey(steamId) && !privateUsers.Contains(steamId))
            {
                // this will map to ISteamUser/GetFriendsListAsync method in the Steam Web API
                // see FriendListResultContainer.cs for response
                ISteamWebResponse <IReadOnlyCollection <FriendModel> > friendsListResponse;

                try
                {
                    friendsListResponse = await steamInterface.GetFriendsListAsync(steamId);
                }
                catch (System.Net.Http.HttpRequestException ex)
                {
                    mappedFriends.Add(steamId, new HashSet <ulong>()); // put that user with no connections
                    privateUsers.Add(steamId);
                    return;
                }

                var friendsList      = friendsListResponse.Data;
                var arrayFriendsList = friendsList.ToArray();

                foreach (var item in arrayFriendsList)
                {
                    ulong friendSteamId = Convert.ToUInt64(item.SteamId.ToString());

                    if (friendSteamId == this.steamIDToSearch) // if this person is the person needed to be found
                    {
                        privateFriends.Add(steamId);
                    }

                    // this checks if there exists a parallel connection
                    if (mappedFriends.ContainsKey(friendSteamId))
                    {
                        mappedFriends.TryGetValue(friendSteamId, out HashSet <ulong> friendValues);
                        if (!(friendValues.Contains(steamId)))
                        {
                            steamIds.Add(friendSteamId);
                        }
                    }
                    else
                    {
                        // The friends list hasn't been checked yet so make it unchecked.
                        if (!privateUsers.Contains(friendSteamId)) // if it doesn't exist in private
                        {
                            uncheckedUsers.Add(friendSteamId);
                        }
                        steamIds.Add(friendSteamId);
                    }
                }
            }

            mappedFriends.Add(steamId, steamIds); // the steamId is now visited.

            if (uncheckedUsers.Contains(steamId)) // If the steamId was unchecked.
            {
                uncheckedUsers.Remove(steamId);   // remove it from unchecked.
            }
        }
Пример #8
0
        public async Task <string> ProcessCommandAsync(string inputMessage)
        {
            if (inputMessage == "!steam")
            {
                return("!steam [command] [username] to use various Steam commands. Valid commands are 'id', 'user', 'bans', 'friends', 'achievements'.");
            }
            else if (inputMessage.StartsWith("!steam"))
            {
                var    splitParsedMessage    = inputMessage.Split(' ');
                string steamCommand          = splitParsedMessage[1];
                string steamCommandParameter = splitParsedMessage[2];

                await steamIdContainer.ResolveAsync(steamCommandParameter);

                ulong steamId = steamIdContainer.To64Bit();

                if (steamCommand == "id")
                {
                    return($"Steam ID for {steamCommandParameter} is {steamId}");
                }
                else if (steamCommand == "user")
                {
                    var steamUser = await steamUserInterface.GetPlayerSummaryAsync(steamId);

                    string response = $"Steam profile for {steamCommandParameter} is {steamUser.Data.ProfileUrl} . Account created on: {steamUser.Data.AccountCreatedDate.ToShortDateString()}. User status is: {steamUser.Data.UserStatus}.";
                    if (!string.IsNullOrWhiteSpace(steamUser.Data.PlayingGameName))
                    {
                        response += $" Currently playing: {steamUser.Data.PlayingGameName}.";
                    }
                    return(response);
                }
                else if (steamCommand == "bans")
                {
                    var steamBans = await steamUserInterface.GetPlayerBansAsync(steamId);

                    // let's just look at the first ban for now
                    var    ban        = steamBans.Data.ToList()[0];
                    string banMessage = $"{steamCommandParameter} has {ban.NumberOfGameBans} game bans and {ban.NumberOfVACBans} VAC bans. Community banned: {ban.CommunityBanned}. VAC banned: {ban.VACBanned}. Economy banned: {ban.EconomyBan}.";
                    if (ban.NumberOfGameBans > 0 || ban.NumberOfVACBans > 0)
                    {
                        banMessage += $" Days since last ban: {ban.DaysSinceLastBan}.";
                    }
                    return(banMessage);
                }
                else if (steamCommand == "friends")
                {
                    var steamFriends = await steamUserInterface.GetFriendsListAsync(steamId);

                    return($"{steamCommandParameter} has {steamFriends.Data.Count} friends");
                }
                else if (steamCommand == "achievements")
                {
                    var appId             = uint.Parse(splitParsedMessage[3]);
                    var steamAchievements = await steamUserStatsInterface.GetPlayerAchievementsAsync(appId, steamId);

                    var completedAchievements = steamAchievements.Data.Achievements.Where(x => x.Achieved == 1);
                    return($"{steamCommandParameter} has {completedAchievements.Count()} achievements in {steamAchievements.Data.GameName}");
                }
                else if (steamCommand == "players")
                {
                    var appId        = uint.Parse(splitParsedMessage[2]);
                    var steamPlayers = await steamUserStatsInterface.GetNumberOfCurrentPlayersForGameAsync(appId);

                    var gameName = games[appId];
                    return($"{gameName} has {steamPlayers.Data} current players");
                }
                else if (steamCommand == "level")
                {
                    var steamLevel = await playerServiceInterface.GetSteamLevelAsync(steamId);

                    return($"{steamCommandParameter} is level {steamLevel.Data} on Steam");
                }
                else if (steamCommand == "badges")
                {
                    var steamBadges = await playerServiceInterface.GetBadgesAsync(steamId);

                    return($"{steamCommandParameter} is level {steamBadges.Data.PlayerLevel} which required {steamBadges.Data.PlayerXpNeededCurrentLevel} XP. {steamCommandParameter} has {steamBadges.Data.PlayerXp} XP and needs {steamBadges.Data.PlayerXpNeededToLevelUp} XP to level up.");
                }
                else if (steamCommand == "recent")
                {
                    var recentGames = await playerServiceInterface.GetRecentlyPlayedGamesAsync(steamId);

                    var    gameList       = recentGames.Data.RecentlyPlayedGames.Select(x => $"{x.Name} (Total: {Math.Round((double)x.PlaytimeForever / 60, 1)} hrs, 2 Wks: {Math.Round((double)x.Playtime2Weeks / 60, 1)} hrs)");
                    string joinedGameList = string.Join(", ", gameList);
                    string response       = $"{steamCommandParameter} has played {recentGames.Data.TotalCount} games in the last 2 weeks: {joinedGameList}.";
                    return(response);
                }
                else if (steamCommand == "news")
                {
                    var appId    = uint.Parse(splitParsedMessage[2]);
                    var gameName = games[appId];
                    var news     = await steamNewsInterface.GetNewsForAppAsync(appId, 1);

                    var recentNews = news.Data.NewsItems.ToList()[0];
                    return($"Here's the latest news for {gameName}. Author: {recentNews.Author}, Title: {recentNews.Title}, Url: {recentNews.Url} .");
                }
            }

            return(string.Empty);
        }
Пример #9
0
        // this will map to ISteamUser/GetFriendsListAsync method in the Steam Web API
        // see FriendListResultContainer.cs for response documentation
        static async void GetFriendsList(ulong steamID, SteamUser steamInterface)
        {
            var friendsListResponse = await steamInterface.GetFriendsListAsync(steamID);

            var friendsList = friendsListResponse.Data;
        }
Пример #10
0
        public async Task <string> SteamFriends(ulong steamId)
        {
            var response = await _steamUser.GetFriendsListAsync(steamId);

            return(response.Data.ToString());
        }