Пример #1
0
        public static IEnumerable <GuildMemberStats> GetSlimPlayersFromGuildPlayerList(string guildJson)
        {
            var jObject = JsonConvert.DeserializeObject(guildJson) as JObject;

            var membersList = new List <GuildMemberStats>();

            var membersTokens = jObject.SelectToken("members");

            foreach (var token in membersTokens)
            {
                try
                {
                    var newMember = new GuildMemberStats()
                    {
                        Name              = token.SelectToken("character.name").ToString(),
                        GuildRank         = int.Parse(token.SelectToken("rank").ToString()),
                        RealmName         = token.SelectToken("character.realm").ToString(),
                        Class             = int.Parse(token.SelectToken("character.class").ToString()),
                        Level             = int.Parse(token.SelectToken("character.level").ToString()),
                        AchievementPoints = int.Parse(token.SelectToken("character.achievementPoints").ToString())
                    };

                    membersList.Add(newMember);
                }
                catch (Exception e)
                {
                }
            }

            return(membersList);
        }
Пример #2
0
        private void PopulateItemsDetails(GuildMemberStats member, PlayerItemDetails itemDetails)
        {
            member.EquippedIlvl = itemDetails.EquippedIlvl;
            member.MaximumIlvl  = itemDetails.MaximumIlvl;

            member.AzeriteLevel = itemDetails.AzeriteLevel.HasValue ? itemDetails.AzeriteLevel.Value : 0;
        }
Пример #3
0
 private void PopulatePvpStats(GuildMemberStats member, PvpStats pvpStats)
 {
     member.Pvp2v2Rating        = pvpStats.Pvp2v2Rating;
     member.Pvp3v3Rating        = pvpStats.Pvp3v3Rating;
     member.PvpRbgRating        = pvpStats.PvpRbgRating;
     member.TotalHonorableKills = pvpStats.TotalHonorableKills;
 }
Пример #4
0
        private async Task <RaiderIoStats> GetRaiderIoStatsAsync(GuildMemberStats member, BlizzardRegion region)
        {
            var raiderIoJson = await this.raiderIoService.GetMythicPlusDungeonData(region, member.Name, member.RealmName);

            if (!RaiderIoParsing.GetRequestSucceeded(raiderIoJson))
            {
                return(null);
            }

            var playerDetails = RaiderIoParsing.GetPlayerFromJson(raiderIoJson);

            Debug.WriteLine("Processed Raider.IO player " + member.Name);

            return(playerDetails);
        }
Пример #5
0
        private async Task <bool> PopulateMemberDataAsync(GuildMemberStats member, BlizzardRegion region)
        {
            string items  = string.Empty;
            string mounts = string.Empty;
            string pets   = string.Empty;
            string pvp    = string.Empty;

            var itemsTask = this.throttler.Throttle(async() =>
            {
                items = await this.blizzardService.GetPlayerItemsAsync(member.Name, member.RealmName, region);
            });

            var mountsTask = this.throttler.Throttle(async() =>
            {
                mounts = await this.blizzardService.GetPlayerMountsAsync(member.Name, member.RealmName, region);
            });

            var petsTask = this.throttler.Throttle(async() =>
            {
                pets = await this.blizzardService.GetPlayerPetsAsync(member.Name, member.RealmName, region);
            });

            var pvpTask = this.throttler.Throttle(async() =>
            {
                pvp = await this.blizzardService.GetPlayerPvpStatsAsync(member.Name, member.RealmName, region);
            });

            await Task.WhenAll(new Task[] { itemsTask, mountsTask, petsTask, pvpTask });

            try
            {
                var itemDetails = GuildMemberParsing.GetItemsDetailsFromJson(items);

                if (itemDetails.LastModifiedDateTime < DateTime.Now - FilterPlayersOlderThan)
                {
                    return(false);
                }

                this.PopulateItemsDetails(member, itemDetails);
            }
            catch (Exception e)
            {
                Debug.WriteLine("Error reading player items for " + member.Name);
            }

            try
            {
                var mountsDetails = GuildMemberParsing.GetMountDetailsFromJson(mounts);

                member.MountCount = mountsDetails.NumberCollected;
            }
            catch (Exception e)
            {
                Debug.WriteLine("Error reading mounts for " + member.Name);
            }

            try
            {
                var petDetails = GuildMemberParsing.GetPetDetailsFromJson(pets);

                member.PetCount = petDetails.NumberCollected;
            }
            catch (Exception e)
            {
                Debug.WriteLine("Error reading pets for " + member.Name);
            }

            try
            {
                var pvpDetails = GuildMemberParsing.GetPvpStatsFromJson(pvp);

                this.PopulatePvpStats(member, pvpDetails);
            }
            catch (Exception e)
            {
                Debug.WriteLine("Error reading PvP stats for " + member.Name);
            }

            Debug.WriteLine("Processed member " + member.Name);

            return(true);
        }