Example #1
0
        public static IAttachmentTransformer GetAttachmentTransformer(SlackMessageSubject subject, MessageTransformation transformation)
        {
            switch (subject)
            {
            case SlackMessageSubject.BuildCompleted:
                return(new BuildCompletedTransformer(transformation));

            default:
                return(new MessageNoChangeTransformer());
            }
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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());
            }
        }
Example #4
0
        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.");
            }
        }
Example #5
0
        private static MessageAttachment TransformMessage(MessageAttachment attachment, SlackMessageSubject subject, MessageTransformation transformation)
        {
            var attachmentTransformer = AttachmentTransformerFactory.GetAttachmentTransformer(subject, transformation);

            return(attachmentTransformer.TransformAttachment(attachment));
        }
Example #6
0
        private static bool PassFilter(MessageAttachment attachment, SlackMessageSubject subject, TeamConfiguration configuration)
        {
            var attachmentFilter = AttachmentFilterFactory.GetAttachmentFilter(subject, configuration, _configuration);

            return(attachmentFilter != null && attachmentFilter.PassFilter(attachment));
        }