Beispiel #1
0
        private async Task LoadCard()
        {
            if (Entities?.UrlEntities == null)
            {
                return;
            }

            TwitterCard card = null;

            foreach (var url in Entities.UrlEntities.Select(u => u.ExpandedUrl))
            {
                card = await CardExtractor.ExtractCard(new Uri( url ));

                if (card != null)
                {
                    break;
                }
            }

            if (card != null)
            {
                Card    = new CardViewModel(card);
                HasCard = Card.Card.IsValid;
            }
            else
            {
                Card    = null;
                HasCard = false;
            }
        }
Beispiel #2
0
        public void TitleIsRequired()
        {
            // Arrange
            var meta = new Dictionary <string, string>
            {
                { "twitter:card", "summary" },
                { "twitter:description", "desc" },
                { "twitter:site", "site" }
            };

            var metaFull = new Dictionary <string, string>
            {
                { "twitter:card", "summary" },
                { "twitter:description", "desc" },
                { "twitter:site", "site" },
                { "twitter:title", "title" }
            };

            // Act
            var card      = new TwitterCard(meta);
            var validCard = new TwitterCard(metaFull);

            // Assert
            Assert.IsFalse(card.IsValid);
            Assert.IsTrue(validCard.IsValid);
        }
Beispiel #3
0
        public void CardWithoutDataIsInvalid()
        {
            // Arrange
            var meta = new Dictionary <string, string>();

            // Act
            var card = new TwitterCard(meta);

            // Assert
            Assert.IsFalse(card.IsValid);
        }
Beispiel #4
0
        public void EmptyHostDoesNotCrash()
        {
            // Arrange
            var card = new TwitterCard(new Dictionary <string, string>());
            var vm   = new CardViewModel(card);

            // Act
            string url = null;
            var    ex  = ExceptionAssert.Catch <NullReferenceException>(() => url = vm.DisplayUrl);

            // Assert
            Assert.IsNull(ex);
            Assert.AreEqual(string.Empty, url);
        }
Beispiel #5
0
        public void UnknownTypeIsInvalid()
        {
            // Arrange
            var meta = new Dictionary <string, string>
            {
                { "twitter:site", "site" },
                { "twitter:title", "title" },
                { "twitter:description", "desc" },
                { "twitter:card", "summary_123" }
            };

            // Act
            var card = new TwitterCard(meta);

            // Assert
            Assert.IsFalse(card.IsValid);
        }
Beispiel #6
0
 public CardViewModel(TwitterCard card)
 {
     Card = card;
 }
 /// <summary>
 /// Creates a string containing the Twitter card meta tags. <see cref="TwitterCard"/> for more information.
 /// </summary>
 /// <param name="htmlHelper">The HTML helper.</param>
 /// <param name="twitterCard">The Twitter card metadata.</param>
 /// <returns>The meta tags.</returns>
 public static IHtmlString TwitterCard(this HtmlHelper htmlHelper, TwitterCard twitterCard)
 {
     return twitterCard;
 }