public static OpenGraphResult ParseHtml(string content) { var result = new OpenGraphResult(); var document = new HtmlDocument(); document.LoadHtml(content); var allMeta = document.DocumentNode.SelectNodes("//meta"); var openGraphMetaTags = from meta in allMeta where (meta.Attributes.Contains("property") && meta.Attributes["property"].Value.StartsWith("og:")) || (meta.Attributes.Contains("name") && meta.Attributes["name"].Value.StartsWith("og:")) select meta; foreach (var metaTag in openGraphMetaTags) { var value = GetOpenGraphValue(metaTag); var property = GetOpenGraphKey(metaTag); if (string.IsNullOrWhiteSpace(value)) continue; result.Add(property, value); } result.PageData = new PageData(); result.PageData.Title = document.DocumentNode.SelectSingleNode("//head/title").InnerText; return result; }
public async Task GetGraphResultsAsyncReturnsOpenGraphAPIResults() { // Arrange List <OpenGraphRequest> openGraphRequests = new List <OpenGraphRequest>() { new OpenGraphRequest { Url = "www.microsoft.com", Id = "1" } }; // Act IEnumerable <OpenGraphResult> openGraphResult = await _openGraphService.GetGraphResultsAsync(_mockHttpRequest.Object, openGraphRequests); // Assert var enumerator = openGraphResult.GetEnumerator(); enumerator.MoveNext(); OpenGraphResult firstElement = enumerator.Current; Assert.NotNull(firstElement.Id); Assert.NotNull(firstElement.Title); Assert.NotNull(firstElement.Description); }