Пример #1
0
 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();
     });
 }
Пример #2
0
        /// <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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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;
        }
Пример #5
0
 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;
 }
Пример #6
0
        public NewItemPage()
        {
            InitializeComponent();

            Item = new RssFeedModel
            {
                Text        = "Item name",
                Description = "This is an item description."
            };

            BindingContext = this;
        }
Пример #7
0
        public RssFeedDetailPage()
        {
            InitializeComponent();

            var item = new RssFeedModel
            {
                Text        = "Item 1",
                Description = "This is an item description."
            };

            viewModel      = new RssFeedDetailViewModel(item);
            BindingContext = viewModel;
        }
Пример #8
0
        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);
        }
Пример #9
0
 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);
     }
 }
Пример #10
0
        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;
            }
        }
Пример #11
0
 static void Main(string[] args)
 {
     XmlSerializer xs           = new XmlSerializer(typeof(RssFeedModel));
     XmlTextReader reader       = new XmlTextReader(FILENAME);
     RssFeedModel  rssFeedModel = (RssFeedModel)xs.Deserialize(reader);
 }