/// <summary> /// Triggered in case of the user holds / taps long on a article. /// Open share menu /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnItemHolded(object sender, HoldingRoutedEventArgs e) { selectedFeedItem = GetFeedItemByButtonSender(sender); if (selectedFeedItem == null) return; DataTransferManager.ShowShareUI(); }
/// <summary> /// Parses async a given url for rss / wordpress feed objects /// </summary> /// <param name="url">URL to the blog</param> /// <returns>Async task</returns> public static async Task<List<FeedItem>> getFeedsAsync(string url) { SyndicationClient client = new SyndicationClient(); List<FeedItem> feedData = new List<FeedItem>(); Uri feedUri = new Uri(url); var feed = await client.RetrieveFeedAsync(feedUri); foreach (SyndicationItem item in feed.Items) { FeedItem feedItem = new FeedItem(); feedItem.Title = item.Title.Text; feedItem.Content = item.Summary.Text; feedItem.Link = item.Links[0].Uri; feedItem.PubDate = item.PublishedDate.DateTime; feedItem.Author = item.Authors[0].Name; List<string> categories = new List<string>(item.Categories.Count); foreach (SyndicationCategory category in item.Categories) { categories.Add(category.Term); } feedItem.Categories = String.Join(", ", categories); var pattern = "(https?)\\S*(png|jpg|jpeg)"; var regex = new Regex(pattern, RegexOptions.IgnoreCase); var match = regex.Match(item.NodeValue); if (match.Success) { var imageUrl = match.Value; // Resize the image to width = 80 before downloading by calling a WP-service imageUrl = imageUrl.Insert(imageUrl.Length, "?w=80"); feedItem.ArticleImageLink = new Uri(imageUrl); } feedData.Add(feedItem); } return feedData; }