Example #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);
        }
Example #2
0
        public Task SendScrapeSuccessAsync(string email, ScrapeJobEvent scrapeJobEvent)
        {
            const string emailSubject = "ScrapeJob Matched Successfully!";

            string emailBody = $"The pattern \"{scrapeJobEvent.ScrapeJob.Pattern}\" was found on website: <a href=\"{scrapeJobEvent.ScrapeJob.Url}\">\"{scrapeJobEvent.ScrapeJob.Url}\"</a>";

            return(_emailSender.SendEmailAsync(email, emailSubject, emailBody));
        }
Example #3
0
        private async Task SendScrapeSuccessEmail(ScrapeJobEvent result)
        {
            var scrapeJob = await _scrapeJobDomainService.GetAsync(result.ScrapeJobForeignKey);

            var user = await _userManager.FindByIdAsync(scrapeJob.IdentityUserForeignKey);

            var email = !string.IsNullOrWhiteSpace(result.ScrapeJob.AlternativeEmail) ? result.ScrapeJob.AlternativeEmail : user.Email;

            try
            {
                await _emailService.SendScrapeSuccessAsync(email, result);
            } catch (EmailServiceException e)
            {
                _logger.LogError(e.ToString());
            }
        }