public Task <List <FeedOption> > Handle(GetFeedOptionsRequest request) { var feedOptions = _feedOptionsStore.GetFeedOptions(); return(Task.FromResult(feedOptions.Select(f => new FeedOption { Id = f.Id, Name = f.Name }).ToList())); }
public async Task <List <Feed> > Handle(GetFeedsRequest request) { var feedOptions = _feedOptionsStore.GetFeedOptions(); var rssTasks = new List <Task <List <SyndicationItem> > >(); foreach (var id in request.Ids) { var option = feedOptions.FirstOrDefault(f => f.Id == id); if (option == null) { continue; } var task = _rssReader.GetItems(option.Url); rssTasks.Add(task); } await Task.WhenAll(rssTasks); var rssItems = new List <SyndicationItem>(); foreach (var completedTask in rssTasks) { rssItems.AddRange(completedTask.Result); } return(rssItems .OrderBy(o => o.Published) .Select(s => new Feed { Title = s.Title, Description = s.Description }) .ToList()); }