public static IAttachmentTransformer GetAttachmentTransformer(SlackMessageSubject subject, MessageTransformation transformation) { switch (subject) { case SlackMessageSubject.BuildCompleted: return(new BuildCompletedTransformer(transformation)); default: return(new MessageNoChangeTransformer()); } }
public void ProcessMessage(JObject message, SlackMessageSubject subject) { var slackMessage = JsonConvert.DeserializeObject <SlackMessage>(message.ToString()); if (slackMessage == null) { _logger.Log(LogLevel.Warning, $"Invalid message received {message}"); return; } foreach (var teamConfiguration in _configuration.TeamConfigurations) { _logger.Log(LogLevel.Information, $"Checking filters for team {teamConfiguration.Name}..."); ProcessMessageByTeam(subject, slackMessage, teamConfiguration); } }
public static IAttachmentFilter GetAttachmentFilter(SlackMessageSubject subject, TeamConfiguration teamConfiguration, SlackFilterConfiguration configuration) { switch (subject) { case SlackMessageSubject.BuildCompleted: return(new BuildCompletedFilter(teamConfiguration, new VstsClient(configuration))); case SlackMessageSubject.PullRequestCreated: return(new PullRequestCreatedFilter(teamConfiguration)); case SlackMessageSubject.ReleaseCompleted: return(new ReleaseCompletedFilter(teamConfiguration, new VstsClient(configuration))); default: return(new MessageWithNoFilter()); } }
private void ProcessMessageByTeam(SlackMessageSubject subject, SlackMessage slackMessage, TeamConfiguration teamConfiguration) { var passingAttachments = slackMessage.Attachments .Where(_ => PassFilter(_, subject, teamConfiguration)).ToArray(); if (passingAttachments.Any()) { var messageToPost = new SlackMessage { Attachments = passingAttachments .Select(_ => TransformMessage(_, subject, teamConfiguration.MessageTransformation)) .ToArray() }; PostMessageToSlack(JsonConvert.SerializeObject(messageToPost), teamConfiguration.SlackUrl); } else { _logger.Log(LogLevel.Information, "Failed to pass the filter."); } }
private static MessageAttachment TransformMessage(MessageAttachment attachment, SlackMessageSubject subject, MessageTransformation transformation) { var attachmentTransformer = AttachmentTransformerFactory.GetAttachmentTransformer(subject, transformation); return(attachmentTransformer.TransformAttachment(attachment)); }
private static bool PassFilter(MessageAttachment attachment, SlackMessageSubject subject, TeamConfiguration configuration) { var attachmentFilter = AttachmentFilterFactory.GetAttachmentFilter(subject, configuration, _configuration); return(attachmentFilter != null && attachmentFilter.PassFilter(attachment)); }