public RssFeedDetailViewModel(RssFeedModel item = null) { Title = item?.Text; Item = item; MessagingCenter.Subscribe <RssFeedDetailPage, RssFeedModel>(this, "SaveRssFeed", async(page, model) => { //await SaveEntity(new RssFeed(model), page); await SaveEntity(new RssFeed(model), page).ContinueWith(async(t) => { if (t.IsCompleted && !t.IsFaulted) { Device.BeginInvokeOnMainThread(async() => { await Application.Current.MainPage.DisplayAlert("Saved changes", "RSS Feed Settings saved.", "OK"); // await page.Navigation.PopAsync(); }); } }); }); MessagingCenter.Subscribe <RssFeedDetailPage, RssFeedModel>(this, "DeleteRssFeed", async(page, model) => { var db = App.Container.GetInstance <IDatabaseProvider>(); RssFeed feed = await db.GetAsync <RssFeed>(Convert.ToInt32(model.Id)); await db.DeleteAsync(feed); await page.Navigation.PopAsync(); }); }
/// <summary> /// Generates the content HTML. /// </summary> /// <param name="feed">The feed.</param> /// <returns></returns> protected RssFeedModel GenerateContentHtml(RssFeedModel feed) { try { TagBuilder pImg = null; if (!string.IsNullOrEmpty(feed.ImageUrl)) { pImg = new TagBuilder("p"); TagBuilder a = new TagBuilder("a"); a.Attributes.Add("href", string.IsNullOrEmpty(feed.ImageLink) ? "#" : feed.ImageLink); TagBuilder img = new TagBuilder("img"); img.Attributes.Add("src", string.IsNullOrEmpty(feed.ImageUrl) ? "#" : feed.ImageUrl); img.Attributes.Add("width", "100%"); a.InnerHtml = img.ToString(); pImg.InnerHtml += a.ToString(); } TagBuilder pContent = new TagBuilder("p"); pContent.InnerHtml += GetStringFromHtmlWithoutSpc(feed.Content); feed.Content = (pImg == null ? "" : pImg.ToString()) + pContent.ToString(); } catch (Exception ex) { ex.ExceptionValueTracker(feed); } return(feed); }
private async Task SaveFavoritesData() { RssFeedModel favorites = FeedsList.Where(f => f.Link.Equals(new Uri("http://localhost"))).FirstOrDefault(); byte[] array = serialize(favorites, typeof(RssFeedModel)); var file = await storageFolder.CreateFileAsync("favorites.dat", CreationCollisionOption.ReplaceExisting); await FileIO.WriteBytesAsync(file, array); }
void ParseRssFeed(RssFeedModel rssFeedModel) { XmlDocument rssXmlDoc = new XmlDocument(); rssXmlDoc.Load(rssFeedModel.Link); XmlNodeList rssNodes = rssXmlDoc.SelectNodes("rss/channel/item"); rssFeedModel.Title = rssNodes[0].SelectSingleNode("title")?.InnerText; rssFeedModel.Description = rssNodes[0].SelectSingleNode("description")?.InnerText; }
public RssFeed(RssFeedModel model) { if (!string.IsNullOrWhiteSpace(model.Id)) { Id = Convert.ToInt32(model.Id); } Name = model.Text; FeedUrl = model.Url; Description = model.Description; Enabled = model.Enabled ? 1 : 0; }
public NewItemPage() { InitializeComponent(); Item = new RssFeedModel { Text = "Item name", Description = "This is an item description." }; BindingContext = this; }
public RssFeedDetailPage() { InitializeComponent(); var item = new RssFeedModel { Text = "Item 1", Description = "This is an item description." }; viewModel = new RssFeedDetailViewModel(item); BindingContext = viewModel; }
RssFeedModel GetRssRoundRobin() { XmlDocument doc = new XmlDocument(); doc.Load(@"../ElectricLadyland/RssFeeds.xml"); Random r = new Random(); int rInt = r.Next(0, doc.DocumentElement.ChildNodes.Count); XmlNode rssFeedRoundBobin = doc.DocumentElement.ChildNodes[rInt]; RssFeedModel rssFeedModel = new RssFeedModel() { Name = rssFeedRoundBobin["name"]?.InnerText, Link = rssFeedRoundBobin["link"]?.InnerText }; ParseRssFeed(rssFeedModel); return(rssFeedModel); }
async Task AddFeedAsync(NewItemPage obj, RssFeedModel item) { try { var newItem = item as RssFeedModel; RssFeed newFeed = new RssFeed(newItem.Url); await _feedReader.GetFeedArticles(newFeed).ContinueWith(async(t) => { if (t.IsCanceled || t.IsFaulted) { Device.BeginInvokeOnMainThread(async() => await Xamarin.Forms.Application.Current.MainPage.DisplayAlert("Error", "There was an issue adding the RSS feed.", "OK")); } else { await SaveEntity(newFeed, obj); Items.Add(new RssFeedModel(newFeed)); } }); } catch (Exception ex) { Debug.WriteLine(ex.Message); } }
private async Task AddRssFeed(string url) { try { SyndicationClient client = new SyndicationClient(); Uri myUri; if (Uri.TryCreate(url, UriKind.Absolute, out myUri)) { if ((myUri.Scheme == "http" || myUri.Scheme == "https")) { SyndicationFeed feed = await client.RetrieveFeedAsync(new Uri(url)); RssFeedModel feedModel = new RssFeedModel(feed.Title.Text, feed.Subtitle != null ? feed.Subtitle.Text : "", new Uri(url), null); feedModel.ArticleList = new ObservableCollection <RssArticleModel>(feed.Items.Select(f => new RssArticleModel(f.Title.Text, f.Summary != null ? Regex.Replace(Regex.Replace(f.Summary.Text, "\\&.{0,4}\\;", string.Empty), "<.*?>", string.Empty) : "", f.Authors.Select(a => a.NodeValue).FirstOrDefault(), f.ItemUri != null ? f.ItemUri : f.Links.Select(l => l.Uri).FirstOrDefault() ))); if (FeedsList.Contains(feedModel)) { FeedsList.Remove(feedModel); } FeedsList.Add(feedModel); } } } catch (Exception) { InvalidRSSFeedMessageVisibility = Visibility.Visible; } }
static void Main(string[] args) { XmlSerializer xs = new XmlSerializer(typeof(RssFeedModel)); XmlTextReader reader = new XmlTextReader(FILENAME); RssFeedModel rssFeedModel = (RssFeedModel)xs.Deserialize(reader); }