using Microsoft.Extensions.Logging; using News_site.Provider; using System; using System.Threading; using System.Threading.Tasks; namespace News_site.Services { public class Cronbot : ICronbot { private readonly ILogger<Cronbot> _logger; private readonly CrawlDataProvider _dataProvider = new CrawlDataProvider(); public Cronbot(ILogger<Cronbot> logger) { _logger = logger; } public async Task DoCrawlData(CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { /* 30 minutes */ var duration = 1000 * 60 * 30; var startCrawlingTime = DateTime.Now; _logger.LogInformation($"Start crawling at: {startCrawlingTime:HH:mm}"); await _dataProvider.CrawlCategories(); await _dataProvider.CrawlLatestNews(); var stopCrawlingTime = DateTime.Now; _logger.LogInformation($"Stop task, crawling in {(stopCrawlingTime - startCrawlingTime).TotalSeconds} seconds"); await Task.Delay(duration); } } } }