示例#1
0
        private string CreateHtmlString(dynamic site, CrawlerReport report)
        {
            var html = new StringBuilder();

            html.Append("<html>");

            html.Append("<head>");
            html.Append("<title>");
            html.Append(string.Format("SEO Report for {0}", site.Url));
            html.Append("</title>");
            html.Append("</head>");

            html.Append("<body>");
            html.Append(string.Format("<p>Report of {0} created on {1}</p>", site.Url, DateTime.Today.ToShortDateString()));

            html.Append("<h2>Summary</h2>");
            html.Append(LogSummary(report));
            html.Append("<br />");
            html.Append("<h2>Status Codes</h2>");
            html.Append(LogStatusCodeSummary(report));
            html.Append("<br />");
            html.Append("<h2>Broken Links</h2>");
            html.Append(LogBrokenLinks(report));
            html.Append("</body>");
            html.Append("</html>");

            return(html.ToString());
        }
        public void CreateXmlLogSummary(dynamic site, CrawlerReport report)
        {
            var html = CreateHtmlString(site, report);

            var streamWriter = new StreamWriter(Path.Combine(Environment.CurrentDirectory, "SEOReport.html"));
            streamWriter.Write(html);
            streamWriter.Flush();
            streamWriter.Close();
        }
示例#3
0
        public void CreateXmlLogSummary(dynamic site, CrawlerReport report)
        {
            var html = CreateHtmlString(site, report);

            var streamWriter = new StreamWriter(Path.Combine(Environment.CurrentDirectory, "SEOReport.html"));

            streamWriter.Write(html);
            streamWriter.Flush();
            streamWriter.Close();
        }
        public string LogSummary(CrawlerReport report)
        {
            var logSummary = new StringBuilder();

            Console.WriteLine("----------------------------");
            Console.WriteLine("Overview");
            Console.WriteLine("----------------------------");
            LogToConsoleAndStringBuilder(logSummary, string.Format("Start URL:  {0}", report.Settings.StartUrl));
            LogToConsoleAndStringBuilder(logSummary, string.Format("Start Time: {0}", report.Settings.StartTime));
            LogToConsoleAndStringBuilder(logSummary, string.Format("End Time:   {0}", report.Settings.EndTime));
            LogToConsoleAndStringBuilder(logSummary, string.Format("URLs:       {0}", report.GetUrlCount()));
            LogToConsoleAndStringBuilder(logSummary, string.Format("Links:      {0}", report.Settings.LinkCount));
            LogToConsoleAndStringBuilder(logSummary, string.Format("Violations: {0}", report.Settings.ViolationCount));

            return logSummary.ToString();
        }
示例#5
0
        public string LogSummary(CrawlerReport report)
        {
            var logSummary = new StringBuilder();

            Console.WriteLine("----------------------------");
            Console.WriteLine("Overview");
            Console.WriteLine("----------------------------");
            LogToConsoleAndStringBuilder(logSummary, string.Format("Start URL:  {0}", report.Settings.StartUrl));
            LogToConsoleAndStringBuilder(logSummary, string.Format("Start Time: {0}", report.Settings.StartTime));
            LogToConsoleAndStringBuilder(logSummary, string.Format("End Time:   {0}", report.Settings.EndTime));
            LogToConsoleAndStringBuilder(logSummary, string.Format("URLs:       {0}", report.GetUrlCount()));
            LogToConsoleAndStringBuilder(logSummary, string.Format("Links:      {0}", report.Settings.LinkCount));
            LogToConsoleAndStringBuilder(logSummary, string.Format("Violations: {0}", report.Settings.ViolationCount));

            return(logSummary.ToString());
        }
        public string LogStatusCodeSummary(CrawlerReport report)
        {
            var statusCodeSummary = new StringBuilder();

            Console.WriteLine("----------------------------");
            Console.WriteLine("Status Code Summary");
            Console.WriteLine("----------------------------");

            _queryBuilder = new CrawlerQueryManager(report);
            var statusCodeUrls = _queryBuilder.GetUrlsByStatusCode();
            foreach (var item in statusCodeUrls)
            {
                LogToConsoleAndStringBuilder(statusCodeSummary, string.Format("{0,20} - {1,5:N0}", item.Key, item.Count()));
            }

            return statusCodeSummary.ToString();
        }
        public string LogBrokenLinks(CrawlerReport report)
        {
            var brokenLinksSummary = new StringBuilder();

            Console.WriteLine("----------------------------");
            Console.WriteLine("Broken Links");
            Console.WriteLine("----------------------------");

            _queryBuilder = new CrawlerQueryManager(report);
            var urls = _queryBuilder.GetBrokenLinks();
            foreach (var item in urls)
            {
                LogToConsoleAndStringBuilder(brokenLinksSummary, item.Url.AbsoluteUri);
            }

            return brokenLinksSummary.ToString();
        }
示例#8
0
        public string LogStatusCodeSummary(CrawlerReport report)
        {
            var statusCodeSummary = new StringBuilder();

            Console.WriteLine("----------------------------");
            Console.WriteLine("Status Code Summary");
            Console.WriteLine("----------------------------");

            _queryBuilder = new CrawlerQueryManager(report);
            var statusCodeUrls = _queryBuilder.GetUrlsByStatusCode();

            foreach (var item in statusCodeUrls)
            {
                LogToConsoleAndStringBuilder(statusCodeSummary, string.Format("{0,20} - {1,5:N0}", item.Key, item.Count()));
            }

            return(statusCodeSummary.ToString());
        }
示例#9
0
        public string LogBrokenLinks(CrawlerReport report)
        {
            var brokenLinksSummary = new StringBuilder();

            Console.WriteLine("----------------------------");
            Console.WriteLine("Broken Links");
            Console.WriteLine("----------------------------");

            _queryBuilder = new CrawlerQueryManager(report);
            var urls = _queryBuilder.GetBrokenLinks();

            foreach (var item in urls)
            {
                LogToConsoleAndStringBuilder(brokenLinksSummary, item.Url.AbsoluteUri);
            }

            return(brokenLinksSummary.ToString());
        }
 public CrawlerQueryManager(CrawlerReport report)
 {
     _report = report;
 }
        void LogBrokenLinks(CrawlerReport report)
        {
            log.LogMessage("##teamcity[testStarted name='Broken_external_links' captureStandardOutput='true']");

            var brokenUrls = from url in report.GetUrls()
                             where (((int) url.StatusCode) > 400)
                                   && !url.IsExternal
                             orderby url.Url.AbsoluteUri ascending
                             select url;

            var builder = new StringBuilder();
            foreach (var brokenUrl in brokenUrls)
            {
                builder.Append(string.Format("'Request for {0} failed with status code {1}", brokenUrl.Url,
                                             brokenUrl.StatusCode));
            }

            if (brokenUrls.Any())
                Console.Write("##teamcity[testFailed name='Broken_external_links' details='{0}'",
                              TeamCityEscape(builder.ToString()));

            log.LogMessage("##teamcity[testFinished name='Broken_external_links']");
        }
        void LogSeoViolations(CrawlerReport report)
        {
            var index = 0;
            foreach (var category in report.GetUrls().Where(r => r.Violations != null)
                .SelectMany(s => s.Violations)
                .GroupBy(s => s.ViolationInfo.Title)
                )
            {
                var suite = TeamCityEscape(category.Key);
                log.LogMessage("##teamcity[testSuiteStarted name='{0}']", suite);
                foreach (var violation in category)
                {
                    var testName = "url_" + TeamCityEscape(Slugger.For(violation.UrlInfo.Url.PathAndQuery));

                    log.LogMessage(string.Format("##teamcity[testStarted name='{0}' captureStandardOutput='false']",
                                                 testName));

                    log.LogMessage("##teamcity[{3} name='{0}' message='{1}' details='{2}']",
                                   testName,
                                   TeamCityEscape(violation.UrlInfo.Url + "\r\n" +
                                                  violation.ViolationInfo.Title),
                                   TeamCityEscape(violation.ViolationInfo.Description),
                                   FailOrIgnore(violation.ViolationInfo.Level)?"testFailed":"testIgnored"
                        );

                    log.LogMessage(string.Format("##teamcity[testFinished name='{0}' captureStandardOutput='true']",
                                                 testName));
                }
                log.LogMessage("##teamcity[testSuiteFinished name='{0}']", suite);
            }
        }
 void LogResponseTimes(CrawlerReport report)
 {
     log.LogMessage("##teamcity[buildStatisticValue key='Average site response time' value='{0}']",
                    report.GetUrls().Average(u => u.TimeTaken));
     log.LogMessage("##teamcity[buildStatisticValue key='Max site response time' value='{0}']",
                    report.GetUrls().OrderBy(u => u.TimeTaken).Last().TimeTaken);
     log.LogMessage("##teamcity[buildStatisticValue key='Min site response time' value='{0}']",
                    report.GetUrls().OrderBy(u => u.TimeTaken).First().TimeTaken);
 }
        private string CreateHtmlString(dynamic site, CrawlerReport report)
        {
            var html = new StringBuilder();
            html.Append("<html>");

            html.Append("<head>");
            html.Append("<title>");
            html.Append(string.Format("SEO Report for {0}", site.Url));
            html.Append("</title>");
            html.Append("</head>");

            html.Append("<body>");
            html.Append(string.Format("<p>Report of {0} created on {1}</p>", site.Url, DateTime.Today.ToShortDateString()));

            html.Append("<h2>Summary</h2>");
            html.Append(LogSummary(report));
            html.Append("<br />");
            html.Append("<h2>Status Codes</h2>");
            html.Append(LogStatusCodeSummary(report));
            html.Append("<br />");
            html.Append("<h2>Broken Links</h2>");
            html.Append(LogBrokenLinks(report));
            html.Append("</body>");
            html.Append("</html>");

            return html.ToString();
        }
 public CrawlerQueryManager(CrawlerReport report)
 {
     _report = report;
 }