using System.Collections.Generic;
public static void Main()
public class MessageBuilder : IMessageBuilder, IMessageHeader, IMessageBody, IMessageComplete
private readonly Message message;
this.message = new Message();
public static IMessageBuilder New()
return new MessageBuilder();
public IMessageHeader To(params string[] recipients)
public IMessageHeader WithTitle(string title)
public IMessageBody WithMetadata(string key, string value)
public IMessageBody WithDivider()
public IMessageComplete WithMarkdown(string message)
public Message Build() => this.message;
public interface IMessageBuilder
IMessageHeader To(params string[] recipients);
public interface IMessageHeader
IMessageHeader WithTitle(string title);
IMessageBody WithMetadata(string key, string value);
public interface IMessageBody
IMessageBody WithMetadata(string key, string value);
IMessageBody WithDivider();
IMessageComplete WithMarkdown(string message);
public interface IMessageComplete
public static class SlackMarkdown
public static string ToLink(string url, string text) => $"<{url}|{text}>";
public static string ToList(IList<string> items) => string.Join("\\n", items.Select(item => ToListItem(item)));
public static string ToListItem(string item) => string.IsNullOrEmpty(item) ? item : $"* {item}";