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); }
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)); }
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()); } }