protected void addButton_Click(object sender, EventArgs e)
        {
            if (!IsValid)
            {
                return;
            }

            Game game = new Game
            {
                Abbreviation = abbreviationTextBox.Text,
                Name         = nameTextBox.Text
            };

            using (SteamCommunityManager community = new SteamCommunityManager())
                using (AchievementManager manager = new AchievementManager())
                {
                    manager.AddGame(game);

                    IEnumerable <Achievement> achievements =
                        community.GetAchievements(steamUserIdTextBox.Text, game);

                    manager.AddAchievements(game.Id, achievements);
                }

            Response.Redirect("~/Admin");
        }
示例#2
0
        public void GetAchievements()
        {
            IEnumerable <UserAchievement> achievements = _manager.GetAchievements("nullreference");

            Assert.That(achievements.Any());
            Assert.That(achievements.Any(a => a.Name == "Acid Reflex"));
        }
示例#3
0
        public void GetAchievements()
        {
            SteamCommunityManager manager = new SteamCommunityManager();

            IEnumerable <Achievement> achievements = manager.GetAchievements("nullreference");

            Assert.That(achievements.Any());
            Assert.That(achievements.Any(a => a.Name == "Acid Reflex"));
        }
示例#4
0
        public void GetGameAchievements()
        {
            SteamCommunityManager manager = new SteamCommunityManager();

            Game game = new Game {
                Id = 1, Name = "Left 4 Dead", Abbreviation = "l4d"
            };

            IEnumerable <Achievement> achievements = manager.GetAchievements("nullreference", game);

            Assert.That(achievements.Any());
            Assert.That(achievements.All(a => a.GameId == game.Id));
        }
        /// <summary>
        /// Serializes the achievements.
        /// </summary>
        /// <param name="steamUserId">The steam user id.</param>
        private static void SerializeAchievements(string steamUserId)
        {
            SteamCommunityManager  manager      = new SteamCommunityManager(new WebClientWrapper(), new SteamProfileXmlParser(), new GameXmlParser(), new AchievementXmlParser());
            List <UserAchievement> achievements = manager.GetAchievements(steamUserId).ToList();

            FileInfo      dll                = new FileInfo("SteamAchievements.Services.Tests");
            DirectoryInfo bin                = new DirectoryInfo(dll.Directory.FullName);
            string        projectPath        = bin.Parent.Parent.FullName;
            string        serializedFilePath = Path.Combine(projectPath, "Serialized" + steamUserId + "Achievements.xml");

            DataContractSerializer serializer =
                new DataContractSerializer(typeof(UserAchievement), new[] { typeof(List <UserAchievement>) });

            using (FileStream writer = new FileStream(serializedFilePath, FileMode.Create))
            {
                serializer.WriteObject(writer, achievements);
            }
        }
示例#6
0
        public void SerializeAchievements()
        {
            SteamCommunityManager       manager      = new SteamCommunityManager();
            List <Services.Achievement> achievements = manager.GetAchievements("Unimatrixero").ToList();

            FileInfo      dll                = new FileInfo("SteamAchievements.Services.Tests");
            DirectoryInfo bin                = new DirectoryInfo(dll.Directory.FullName);
            string        projectPath        = bin.Parent.Parent.FullName;
            string        serializedFilePath = Path.Combine(projectPath, "SerializedUnimatrixeroAchievements.xml");

            DataContractSerializer serializer =
                new DataContractSerializer(typeof(Services.Achievement), new[] { typeof(List <Services.Achievement>) });

            using (FileStream writer = new FileStream(serializedFilePath, FileMode.Create))
            {
                serializer.WriteObject(writer, achievements);
            }
        }
        public void GetAchievements()
        {
            SteamCommunityManager manager = new SteamCommunityManager();

            IEnumerable <Game> games = new[]
            {
                new Game {
                    Id = 1, Name = "Left 4 Dead", Abbreviation = "l4d"
                },
                new Game {
                    Id = 2, Name = "Left 4 Dead 2", Abbreviation = "l4d2"
                }
            };
            IEnumerable <Achievement> achievements = manager.GetAchievements("nullreference", games);

            Assert.That(achievements.Any());

            Assert.That(achievements.SingleOrDefault(a => a.Name == "Acid Reflex"), Is.Not.Null);
        }
        public void ApiNameMigration()
        {
            UserAchievement[]  communityAchievements;
            Data.Achievement[] dataAchievements;
            using (SteamRepository repository = new SteamRepository())
            {
                Dictionary <string, ICollection <UserAchievement> > userCommunityAchievements;
                using (
                    SteamCommunityManager communityManager =
                        new SteamCommunityManager(new WebClientWrapper(), new SteamProfileXmlParser(),
                                                  new GameXmlParser(), new AchievementXmlParser()))
                {
                    string[] invalidUserProfiles =
                        new[] { "0", "/zero_x9", "-vaka-", "inv4d3r", "barakitten", "76561198032315004", "120gb" };
                    var gameUsersQuery =
                        from userAchievement in repository.UserAchievements
                        where userAchievement.Achievement.ApiName.Length == 0 &&
                        !invalidUserProfiles.Contains(userAchievement.User.SteamUserId)
                        group userAchievement by userAchievement.Achievement.GameId
                        into g
                        select new { GameId = g.Key, SteamUserId = g.Min(ua => ua.User.SteamUserId) };

                    Dictionary <int, string> gameUsers = gameUsersQuery.OrderBy(s => s.GameId)
                                                         .ToDictionary(s => s.GameId, s => s.SteamUserId);

                    Debug.WriteLine(String.Join(", ", gameUsers.Keys));

                    userCommunityAchievements = new Dictionary <string, ICollection <UserAchievement> >();

                    foreach (string user in gameUsers.Values.Distinct().OrderBy(v => v))
                    {
                        try
                        {
                            ICollection <UserAchievement> userAchievements = communityManager.GetAchievements(user);
                            userCommunityAchievements.Add(user, userAchievements);
                        }
                        catch (Exception ex)
                        {
                            Debug.WriteLine("GetAchievements failed for user " + user + ".");
                            Debug.WriteLine(ex);
                            if (ex.InnerException != null)
                            {
                                Debug.WriteLine(ex.InnerException);
                            }
                        }
                    }
                }

                communityAchievements =
                    userCommunityAchievements.Values.SelectMany(v => v.Select(ua => ua)).OrderBy(ua => ua.Game.Id)
                    .OrderBy(ua => ua.AchievementApiName).Distinct().ToArray();

                Serialize("CommunityAchievements.xml", communityAchievements);

                dataAchievements = repository.Achievements.ToArray();
                foreach (Data.Achievement dataAchievement in dataAchievements)
                {
                    UserAchievement achievement =
                        communityAchievements
                        .Where(a =>
                               a.Game.Id == dataAchievement.GameId &&
                               a.Name.ToUpper() == dataAchievement.Name.ToUpper() &&
                               a.Description.ToUpper() == dataAchievement.Description.ToUpper())
                        .FirstOrDefault();
                    if (achievement != null)
                    {
                        dataAchievement.ApiName = achievement.AchievementApiName;
                        //Debug.WriteLine("Id: {0}, GameId: {1}, Name: {2}, ApiName: {3}",
                        //                dataAchievement.Id, dataAchievement.GameId,
                        //                dataAchievement.Name, dataAchievement.ApiName);
                    }
                }

                Serialize("UpdatedApiNameAchievements.xml", dataAchievements.ToArray());

                ChangeSet changeSet = repository.Context.GetChangeSet();
                Debug.WriteLine(changeSet);
                repository.SubmitChanges();
            }
            //Assert.That(changeSet.Updates, Is.Not.Empty);

            Debug.WriteLine("Total Data Achievements: " + dataAchievements.Length);
            Debug.WriteLine("Total Community Achievements: " + communityAchievements.Length);
        }