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);
        }