private async Task DoCrawling(
            Crawling crawling,
            ICrawlingRepository repository,
            CancellationToken stoppingToken)
        {
            try
            {
                crawling.Status = CrawlingStatus.InProgress;
                await repository.UpdateCrawlingAsync(crawling);

                var options        = new CrawlingOptions(crawling.Expression, crawling.Url);
                var crawlingResult = await _crawlingService.CrawlAsync(options, stoppingToken);

                crawling.CrawlingDetails = _mapper.MapDetails(crawling.Id, crawlingResult);
                crawling.Status          = CrawlingStatus.Completed;
                await repository.UpdateCrawlingAsync(crawling);
            }
            catch (Exception e)
            {
                crawling.Status     = CrawlingStatus.Failed;
                crawling.StatusText = e.ToString();
                await repository.UpdateCrawlingAsync(crawling);

                _logger.LogError(e, $"Error while crawling {crawling?.Url} in background service.");
            }
        }
Exemple #2
0
 public CrawlingController(
     ICrawlingRepository repository,
     IUrlValidationService urlValidation,
     ICrawlingMapperService mapper,
     IHttpContextAccessor httpContextAccessor) : base(repository, mapper, httpContextAccessor)
 {
     _urlValidation = urlValidation;
 }
Exemple #3
0
        public BaseCrawlingController(
            ICrawlingRepository repository,
            ICrawlingMapperService mapper,
            IHttpContextAccessor httpContextAccessor)
        {
            _repository = repository;
            _mapper     = mapper;
            _userId     = httpContextAccessor.GetUserId();

            if (string.IsNullOrWhiteSpace(_userId))
            {
                throw new ArgumentException("Could not find User Id.", nameof(_userId));
            }
        }
 public CrawlingDetailsController(
     ICrawlingRepository repository,
     ICrawlingMapperService mapper,
     IHttpContextAccessor httpContextAccessor) : base(repository, mapper, httpContextAccessor)
 {
 }