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