public async Task <MuteItem> GetMutedItem(SlackNotificationRequestMsg message)
        {
            string key = _mutedSenders.Keys.FirstOrDefault(item => message.Sender.IndexOf(item, StringComparison.OrdinalIgnoreCase) >= 0);

            if (!string.IsNullOrEmpty(key))
            {
                return(_mutedSenders[key]);
            }

            key = _mutedSenders.Keys.FirstOrDefault(item => message.Message.StartsWith(item));

            if (!string.IsNullOrEmpty(key))
            {
                await _log.WriteInfoAsync(nameof(NotificationFilter), nameof(GetMutedItem), message.ToJson(), "Sender set in the Message property");

                return(_mutedSenders[key]);
            }

            key = _mutedPrefixes.Keys.FirstOrDefault(item => message.Message.StartsWith(item));

            if (!string.IsNullOrEmpty(key))
            {
                return(_mutedPrefixes[key]);
            }

            key = _mutedMessagesRegex.Keys.FirstOrDefault(item => Regex.IsMatch(message.Message, item));

            if (!string.IsNullOrEmpty(key))
            {
                return(_mutedMessagesRegex[key]);
            }

            return(null);
        }
Ejemplo n.º 2
0
        public async Task ProcessInMessage(SlackNotificationRequestMsg msg)
        {
            try
            {
                await _srvSlackNotifications.SendNotification(msg.Type, msg.Message, msg.Sender);
            }
            catch (Exception ex)
            {
                await _log.WriteErrorAsync("SlackNotificationRequestsConsumer", "ProcessInMessage", msg.ToJson(), ex);

                throw;
            }
        }
Ejemplo n.º 3
0
        private async Task ProcessMessageFromQueue(SlackNotificationRequestMsg msg, string queueName)
        {
            try
            {
                MuteItem muteItem = await _notificationFilter.GetMutedItem(msg);

                if (muteItem != null && string.IsNullOrEmpty(muteItem.Type))
                {
                    muteItem.MutedMessagesCount++;

                    if (muteItem.MutedMessagesCount > 1)
                    {
                        return;
                    }

                    await _srvSlackNotifications.SendNotificationAsync(
                        msg.Type,
                        $"*[This message is muted for {muteItem.TimeToMute.TotalMinutes} minute(s)! (using: '{muteItem.Value}')]*: {msg.Message}",
                        $"*[:tired_face: muted :tired_face: ]* {msg.Sender}");

                    return;
                }

                string message = msg.Message;

                if (muteItem?.Type != null && muteItem.Type != msg.Type)
                {
                    message = $"[redirected from {msg.Type}] {message}";
                }

                await _srvSlackNotifications.SendNotificationAsync(muteItem?.Type ?? msg.Type, message, msg.Sender);
            }
            catch (Exception ex)
            {
                _log.WriteError($"ProcessMessageFromQueue: {queueName}", msg, ex);
                throw;
            }
        }
Ejemplo n.º 4
0
 public Task ProcessWarningMessage(SlackNotificationRequestMsg msg)
 {
     return(ProcessMessageFromQueue(msg, "slack-notifications-warning"));
 }
Ejemplo n.º 5
0
 public Task ProcessTraceMessage(SlackNotificationRequestMsg msg)
 {
     return(ProcessMessageFromQueue(msg, "slack-notifications-trace"));
 }
Ejemplo n.º 6
0
        public Task ProcessMonitorMessage(SlackNotificationRequestMsg msg)
        {
            _msgForwarder.ForwardMsgAsync(msg.ToJson()); //temporary added until logs will not be using pub/sub. Forwarded message will be analyzed by another job

            return(ProcessMessageFromQueue(msg, "slack-notifications-monitor"));
        }
Ejemplo n.º 7
0
 public Task ProcessInfoMessage(SlackNotificationRequestMsg msg)
 {
     return(ProcessMessageFromQueue(msg, "slack-notifications-information"));
 }
Ejemplo n.º 8
0
 public Task ProcessErrorMessage(SlackNotificationRequestMsg msg)
 {
     return(ProcessMessageFromQueue(msg, "slack-notifications-error"));
 }
Ejemplo n.º 9
0
 public Task ProcessCriticalMessage(SlackNotificationRequestMsg msg)
 {
     return(ProcessMessageFromQueue(msg, "slack-notifications-critical"));
 }