public async Task <List <PvpLeaderboardRow> > GetLeaderboardsAsync(PvpBracket pvpBracket = PvpBracket.Bracket2v2) { string query = $"/wow/leaderboard/{pvpBracket.GetEnumValue()}"; var results = await reader.GetAsync <Dictionary <string, List <PvpLeaderboardRow> > >(query); return(results["rows"]); }
/// <summary> /// Begins an async operation that gets the top ranked rated PVP players /// </summary> /// <param name="type">The PVP bracket to fetch</param> /// <returns> The state of the request </returns> public Task <PvpLeaderboardResponse> GetPvpLeaderboardAsync(PvpBracket type) { string strType = EnumHelper <PvpBracket> .EnumToString(type); return(GetAsync <PvpLeaderboardResponse>("/api/wow/leaderboard/" + strType, null)); }
/// <summary> /// /// </summary> /// <param name="locale"></param> /// <param name="region"></param> /// <param name="token"></param> /// <param name="pvpSeasonId"></param> /// <param name="pvpBracket"></param> /// <returns></returns> public static async Task <PvpLeaderboard> GetPvpLeaderboardApi(Base.Locale locale, Base.Region region, string token, int pvpSeasonId, PvpBracket pvpBracket) { string clientString = $"https://{region.ToDescriptionString()}.api.blizzard.com/data/wow/pvp-season/{pvpSeasonId}/pvp-leaderboard/{pvpBracket.ToDescriptionString()}?namespace=dynamic-{region.ToDescriptionString()}&locale={locale.ToDescriptionString()}&access_token={token}"; return(await Util.RequestHandler.ParseJson <PvpLeaderboard>(clientString, token)); }
/// <summary> /// /// </summary> /// <param name="pvpSeasonId"></param> /// <param name="pvpBracket"></param> /// <returns></returns> public static async Task <PvpLeaderboard> GetPvpLeaderboardApi(int pvpSeasonId, PvpBracket pvpBracket) { return(await GetPvpLeaderboardApi(Settings.Locale, Settings.Region, Settings.Token, pvpSeasonId, pvpBracket)); }
/// <summary> /// Leader boards test /// </summary> /// <param name="bracket"></param> private void TestPvPLeaderboard(PvpBracket bracket) { var client = new WowClient(TestConstants.TestRegion, "en-gb"); var response = client.GetPvpLeaderboardAsync(bracket).Result; Assert.IsNotNull(response); Assert.IsNotNull(response.Leaderboard); Assert.IsNotNull(response.ToString()); Assert.IsNotNull(new PvpLeaderboardResponse().ToString()); Assert.IsTrue(response.Leaderboard.Count > 0); var first = response.Leaderboard[0]; Assert.IsNotNull(first.ToString()); Assert.IsNotNull(first.Name); Assert.IsTrue(first.Rating > 0); Assert.IsNotNull(first.Name); Assert.IsTrue(first.Ranking > 0); Assert.IsNotNull(first.RealmName); Assert.IsNotNull(first.RealmSlug); CharacterPvpBracketInformation info; var chr = client.GetCharacterAsync(first.RealmName, first.Name, CharacterFields.Pvp).Result; Assert.IsNotNull(chr.Pvp); Assert.IsNotNull(chr.Pvp.Brackets); switch (bracket) { case PvpBracket.Arena2v2: info = chr.Pvp.Brackets.Arena2v2; break; case PvpBracket.Arena3v3: info = chr.Pvp.Brackets.Arena3v3; break; case PvpBracket.Arena5v5: info = chr.Pvp.Brackets.Arena5v5; break; case PvpBracket.RatedBattleground: info = chr.Pvp.Brackets.RatedBattleground; break; default: info = null; break; } Assert.IsNotNull(info); Assert.AreEqual(info.Rating, first.Rating); Assert.AreEqual(info.SeasonWins, first.SeasonWins); Assert.AreEqual(info.SeasonLosses, first.SeasonLosses); Assert.AreEqual(info.WeeklyLosses, first.WeeklyLosses); Assert.AreEqual(info.WeeklyWins, first.WeeklyWins); Assert.AreEqual(info.WeeklyLosses + info.WeeklyWins, info.WeeklyPlayed); Assert.AreEqual(info.SeasonLosses + info.SeasonWins, info.SeasonPlayed); Assert.AreEqual(bracket, info.PvpBracket); Assert.AreEqual(1, first.Ranking); }