public async Task <Halo3StatModel> GetHalo3StatsFromBungie(string gamerTag) { Halo3StatModel haloStatModel = new Halo3StatModel(); if (string.IsNullOrWhiteSpace(gamerTag)) { return(await Task.FromResult(haloStatModel)); } else { WebClient client = new WebClient(); string downloadedString = client.DownloadString(Constants.Halo3Constants.UrlBase + gamerTag); HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(downloadedString); List <string> cleanedResult = new List <string>(); // TODO: This currently gets the right divs, but it also grabs others that I don't need. // Need to collect the ones that I need and then parse what I need out of them foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[contains(@class, 'halo3')]")) { string value = node.InnerText; cleanedResult.AddRange(GetCleanAndSplitHalo3StatsFromBungie(value)); } haloStatModel = ParseHalo3StatsFromBungie(cleanedResult); return(await Task.FromResult(haloStatModel)); } }
/** * SageOfChaos : Total Halo 3 Games: Total Games: 1720 */ public async Task GetHalo3StatsFromBungie_Goldenflow(string gamerTag) { // Arrange // Do nothing // Act Halo3StatModel result = await _sut.GetHalo3StatsFromBungie(gamerTag); // Assert Assert.IsTrue(result.TotalGames == 1720); Assert.IsTrue(result.TotalExp == 1171); Assert.IsTrue(result.HighestSkill == 48); Assert.IsTrue(result.RankedKdRatio == float.Parse("1.37")); Assert.IsTrue(result.TotalRankedKills == 11681); Assert.IsTrue(result.TotalRankedDeaths == 8545); Assert.IsTrue(result.TotalRankedGames == 865); Assert.IsTrue(result.SocialKdRatio == float.Parse("1.70")); Assert.IsTrue(result.TotalSocialKills == 11811); Assert.IsTrue(result.TotalSocialDeaths == 6929); Assert.IsTrue(result.TotalSocialGames == 855); }
private Halo3StatModel ParseHalo3StatsFromBungie(List <string> htmlStats) { Halo3StatModel haloStatModel = new Halo3StatModel(); for (int i = 0; i < htmlStats.Count; i++) { string stat = htmlStats[i]; if (stat.Contains(Constants.Halo3Constants.TotalGames, StringComparison.OrdinalIgnoreCase)) { haloStatModel.TotalGames = int.Parse(htmlStats[i + 1]); } else if (stat.Contains(Constants.Halo3Constants.TotalExp, StringComparison.OrdinalIgnoreCase)) { haloStatModel.TotalExp = int.Parse(htmlStats[i + 1]); } else if (stat.Contains(Constants.Halo3Constants.HighestSkill, StringComparison.OrdinalIgnoreCase)) { haloStatModel.HighestSkill = int.Parse(htmlStats[i + 1]); } else if (stat.Contains(Constants.Halo3Constants.RankedKdRatio, StringComparison.OrdinalIgnoreCase)) { haloStatModel.RankedKdRatio = float.Parse(htmlStats[i + 1]); haloStatModel.TotalRankedKills = int.Parse(htmlStats[i + 3]); haloStatModel.TotalRankedDeaths = int.Parse(htmlStats[i + 5]); haloStatModel.TotalRankedGames = int.Parse(htmlStats[i + 7]); } else if (stat.Contains(Constants.Halo3Constants.SocialKdRatio, StringComparison.OrdinalIgnoreCase)) { haloStatModel.SocialKdRatio = float.Parse(htmlStats[i + 1]); haloStatModel.TotalSocialKills = int.Parse(htmlStats[i + 2]); haloStatModel.TotalSocialDeaths = int.Parse(htmlStats[i + 3]); haloStatModel.TotalSocialGames = int.Parse(htmlStats[i + 4]); } } return(haloStatModel); }