Beispiel #1
0
 private async Task <IEnumerable <NewsFeedItem> > GetNewsFeedAsync(Data.Models.NewsFeed newsFeed)
 {
     return(await Task.Run(() =>
     {
         string albumRSS;
         string url = newsFeed.FeedUrl;
         XmlReader r = XmlReader.Create(url);
         SyndicationFeed albums = SyndicationFeed.Load(r);
         r.Close();
         List <NewsFeedItem> lstItems = new List <NewsFeedItem>();
         foreach (SyndicationItem album in albums.Items)
         {
             albumRSS = GetAlbumRSS(album);
             lstItems.Add(new NewsFeedItem()
             {
                 Title = album.Title?.Text,
                 Summary = album.Summary?.Text,
                 Creator = album.Authors != null && album.Authors.Any() ?
                           album.Authors.Select(o => o.Name).Aggregate((authors, author) => authors + " , " + author) : "Unknown",
                 Date = album.PublishDate == null ? "" : album.PublishDate.DateTime.ToString(),
                 ItemUrl = album.Links != null && album.Links.Count > 0 ? album.Links[0].Uri.ToString() : ""
             });
         }
         return lstItems;
     }));
 }
        // POST api/<controller>
        public void Post([FromBody] NewFeedViewModel newFeedViewModel)
        {
            if (newFeedViewModel == null)
            {
                throw new Exception($"{newFeedViewModel} should not be null.");
            }

            if (ModelState.IsValid)
            {
                var newsFeed = new Data.Models.NewsFeed()
                {
                    FeedName   = newFeedViewModel.NewsFeedName,
                    FeedUrl    = newFeedViewModel.NewsFeedURL,
                    Subscribed = true,
                    Category   = new Data.Models.Category()
                    {
                        Description = newFeedViewModel.CategoryName
                    }
                };
                var category = _categoryService.GetCategories().FirstOrDefault(o => o.Description == newFeedViewModel.CategoryName);
                if (category != null)
                {
                    newsFeed.CategoryID = category.ID;
                }

                _newsFeedService.AddNewsFeed(newsFeed);
                return;
            }
            StringBuilder errors = new StringBuilder();

            foreach (var value in ModelState.Values)
            {
                errors.AppendLine(value.Errors.First().ErrorMessage);
            }


            throw new Exception(errors.ToString());
        }
 public void AddNewsFeed(Data.Models.NewsFeed newsFeed)
 {
     _newsFeedRepository.AddNewsFeed(newsFeed);
 }