diff --git a/src/Umbraco.Web/HealthCheck/HealthCheckResults.cs b/src/Umbraco.Web/HealthCheck/HealthCheckResults.cs index a2548f47fb..5da4ffcca7 100644 --- a/src/Umbraco.Web/HealthCheck/HealthCheckResults.cs +++ b/src/Umbraco.Web/HealthCheck/HealthCheckResults.cs @@ -1,20 +1,22 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; using System.Text; +using MarkdownSharp; using Umbraco.Core.Logging; namespace Umbraco.Web.HealthCheck { - public class HealthCheckResults + internal class HealthCheckResults { private readonly Dictionary> _results; - public HealthCheckResults(IEnumerable checks) + internal HealthCheckResults(IEnumerable checks) { _results = checks.ToDictionary(t => t.Name, t => t.GetStatus()); } - public void LogResults() + internal void LogResults() { LogHelper.Info("Scheduled health check results:"); foreach (var result in _results) @@ -38,9 +40,14 @@ namespace Umbraco.Web.HealthCheck } } - public string ResultsAsMarkDown() + internal string ResultsAsMarkDown(bool slackMarkDown = false) { var newItem = "- "; + if (slackMarkDown) + { + newItem = "• "; + } + var sb = new StringBuilder(); foreach (var result in _results) @@ -50,19 +57,39 @@ namespace Umbraco.Web.HealthCheck var checkIsSuccess = result.Value.All(x => x.ResultType == StatusResultType.Success); if (checkIsSuccess) { - sb.AppendFormat("{0}Checks for'{1}' all completed succesfully.", newItem, checkName); + sb.AppendFormat("{0}Checks for'{1}' all completed succesfully.{2}", newItem, checkName, Environment.NewLine); } else { - sb.AppendFormat("{0}Checks for'{1}' completed with errors.", newItem, checkName); + sb.AppendFormat("{0}Checks for'{1}' completed with errors.{2}", newItem, checkName, Environment.NewLine); } foreach (var checkResult in checkResults) { - sb.AppendFormat("{0}{1}Result:'{2}' , Message: '{3}'", newItem, newItem, checkResult.ResultType, checkResult.Message); + sb.AppendFormat("\t{0}Result:'{1}' , Message: '{2}'{3}", newItem, checkResult.ResultType, SimpleHtmlToMarkDown(checkResult.Message, slackMarkDown), Environment.NewLine); } } return sb.ToString(); } + + internal string ResultsAsHtml() + { + Markdown mark = new Markdown(); + return mark.Transform(ResultsAsMarkDown()); + } + private string SimpleHtmlToMarkDown(string html, bool slackMarkDown = false) + { + if (slackMarkDown) + { + return html.Replace("", "*") + .Replace("", "*") + .Replace("", "_") + .Replace("", "_"); + } + return html.Replace("", "**") + .Replace("", "**") + .Replace("", "*") + .Replace("", "*"); + } } } diff --git a/src/Umbraco.Web/Scheduling/HealthCheckNotifier.cs b/src/Umbraco.Web/Scheduling/HealthCheckNotifier.cs index 7d6e4c96f9..f4687c7751 100644 --- a/src/Umbraco.Web/Scheduling/HealthCheckNotifier.cs +++ b/src/Umbraco.Web/Scheduling/HealthCheckNotifier.cs @@ -69,7 +69,7 @@ namespace Umbraco.Web.Scheduling var slackMessage = new SlackMessage { Channel = "#test", - Text = results.ResultsAsMarkDown(), + Text = results.ResultsAsMarkDown(true), IconEmoji = Emoji.Ghost, Username = "Umbraco Health Check Notifier" };