Example #1
0
        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);
            }
        }
Example #2
0
        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());
        }
Example #3
0
        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
                }
            }
        }