public void CheckResponse(Site site, SiteResponse lastResponse) { try { if (lastResponse == null) { _logger.LogInfo(site.SiteName + " - Checking changes (first time)."); } else { _logger.LogInfo(site.SiteName + " - Checking changes."); } string html = SiteHtmlUtil.GetSiteHtml(site); SiteResponse currentResponse; string html_to_text = SiteHtmlUtil.StripHTMLAdvanced(html); //string currentResponseHash = HashUtil.CalculateMD5Hash(html); string currentResponseHash = HashUtil.CalculateMD5Hash(html_to_text); //if (lastResponse == null || !lastResponse.Contents.Equals(html)) if (lastResponse == null || !lastResponse.Hash.Equals(currentResponseHash)) { NotificationHelper notificationHelper = new NotificationHelper(); currentResponse = new SiteResponse(); currentResponse.Site = site; currentResponse.CheckDate = DateTime.Now; currentResponse.StatusCode = "200"; currentResponse.Contents = html; //currentResponse.HtmlContents = html; //currentResponse.Contents = current_response_html_to_text; currentResponse.Hash = currentResponseHash; currentResponse.Diff = notificationHelper.GetDiff(currentResponse, lastResponse); site.SiteResponses.Add(currentResponse); _siteResponseRepository.Save(currentResponse); _siteRepository.SaveOrUpdate(site); if (lastResponse != null) { string message = site.SiteName + " has changes - Sending notification email."; _logger.LogInfo(message); Notification notification = notificationHelper.CreateNotification(site, currentResponse, lastResponse); _notificationsRepository.SaveOrUpdate(notification); _logger.LogSiteChanged(notification, site, message, currentResponse.Diff); } } else { _logger.LogInfo(site.SiteName + " doesn't have changes."); currentResponse = lastResponse; currentResponse.CheckDate = DateTime.Now; currentResponse.StatusCode = "200"; _siteResponseRepository.SaveOrUpdate(currentResponse); } } catch (Exception ex) { LogErrorGettingSiteResponse(site, ex); } }
private static string BuildSnapshotNotification(SiteResponseRepository siteResponseRepository, User user, IEnumerable <Site> sites) { StringBuilder sb = new StringBuilder(); foreach (var site in sites) { string snapshotContents = null; var lastResponse = siteResponseRepository.GetLastResponse(site.Id); if (lastResponse != null) { snapshotContents = SiteHtmlUtil.StripHTMLAdvanced(lastResponse.Contents); } else { snapshotContents = "No response available right now."; } snapshotContents = snapshotContents.Replace("(\r|\n|\r\n)+", "<br //>"); sb.AppendFormat(@"Snapshot for <b><a href='{0}'>{1}</a></b><br /><br />{2}<br /><br />", site.SiteUrl, site.SiteName, snapshotContents); var siteErrorsForPeriod = site.SiteErrors.Where(x => x.Date >= DateTime.Now.Subtract(TimeSpan.FromDays(user.SnapshotInterval))).OrderBy(x => x.Date).Take(10).ToList(); if (siteErrorsForPeriod.Count > 0) { sb.Append("Errors since last snapshot: <br />"); foreach (var siteError in siteErrorsForPeriod) { sb.AppendFormat("Em {0} ocorreu o erro: {1}. <br />", siteError.Date, siteError.ErrorDetails); } } sb.Append("<br /><br />"); } return(sb.ToString()); }
private void Window_Loaded_1(object sender, RoutedEventArgs e) { using (var session = SharpArch.NHibernate.NHibernateSession.GetDefaultSessionFactory().OpenSession()) { //SiteRepository siteRepository = new SiteRepository(session); //Site site = siteRepository.Get(SiteId); SiteResponseRepository siteResponseRepository = new SiteResponseRepository(session); var lastResponse = siteResponseRepository.GetLastResponse(SiteId); if (lastResponse != null) { tbHtmlContents.Text = lastResponse.Contents; tbTextContents.Text = SiteHtmlUtil.StripHTMLAdvanced(lastResponse.Contents); //tbDiffContents.Text = lastResponse.Diff; if (String.IsNullOrEmpty(lastResponse.Diff)) { webBrowserDiffContents.NavigateToString("No contents... :("); } else { StringBuilder sb = new StringBuilder(); sb.Append(NotificationHelper.GetBodyTopHtml()); sb.Append(lastResponse.Diff); sb.Append(NotificationHelper.GetBottomHtml()); webBrowserDiffContents.NavigateToString(sb.ToString()); } if (String.IsNullOrEmpty(lastResponse.Contents)) { webBrowser.NavigateToString("No contents... :("); } else { webBrowser.NavigateToString(lastResponse.Contents); } liveBrowser.Navigate(lastResponse.Site.SiteUrl); //webBrowser.Document } } }