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); }
private void PopulateItemsDetails(GuildMemberStats member, PlayerItemDetails itemDetails) { member.EquippedIlvl = itemDetails.EquippedIlvl; member.MaximumIlvl = itemDetails.MaximumIlvl; member.AzeriteLevel = itemDetails.AzeriteLevel.HasValue ? itemDetails.AzeriteLevel.Value : 0; }
private void PopulatePvpStats(GuildMemberStats member, PvpStats pvpStats) { member.Pvp2v2Rating = pvpStats.Pvp2v2Rating; member.Pvp3v3Rating = pvpStats.Pvp3v3Rating; member.PvpRbgRating = pvpStats.PvpRbgRating; member.TotalHonorableKills = pvpStats.TotalHonorableKills; }
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); }
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); }