Exemplo n.º 1
0
        public async Task <bool> ExecuteScrapeJobAsync(ScrapeJob scrapeJob)
        {
            if (scrapeJob == null)
            {
                return(false);
            }

            var result = new ScrapeJobEvent();

            try
            {
                var url = new Uri(scrapeJob.Url);
                result = await _scraper.ExecuteAsync(url, scrapeJob.Pattern);
            }
            catch (UriFormatException ex)
            {
                result.Type      = ScrapeJobEventType.Error;
                result.Message   = ex.Message;
                result.Url       = scrapeJob.Url;
                result.TimeStamp = DateTime.UtcNow;
            }

            result.ScrapeJobForeignKey = scrapeJob.Id;

            await _scrapeJobEventDomainService.AddAsync(result);

            var resultStatus = await _unitOfWork.CommitAsync();

            if (result.Type.Equals(ScrapeJobEventType.Match))
            {
                await SendScrapeSuccessEmail(result);
            }

            return(resultStatus);
        }