public async Task <Protocols.Response.Feed> Execute(Protocols.Request.Feed feed) { var onCrawlDataDelegate = new RssCrawler.CrawlDataDelegate(OnNewCrawlData); var rssList = feed.All ? (await _rssService.All()).ConvertAll(x => x.ToProtocol()) : feed.RssList; Parallel.ForEach(rssList, new ParallelOptions { MaxDegreeOfParallelism = 16 }, async rss => { var update = await new RssCrawler(onCrawlDataDelegate, _mongoDbService.Database, rss.ToModel()).RunAsync(); if (update != null) { await _rssService.Update(update); } } ); return(new Protocols.Response.Feed { ResultCode = Code.ResultCode.Success }); }
public async Task <Protocols.Response.Feed> Feed([FromBody] Protocols.Request.Feed feed) { return(await _feedCrawlingService.Execute(feed)); }