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); }
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; } }
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; } }
public Task ProcessWarningMessage(SlackNotificationRequestMsg msg) { return(ProcessMessageFromQueue(msg, "slack-notifications-warning")); }
public Task ProcessTraceMessage(SlackNotificationRequestMsg msg) { return(ProcessMessageFromQueue(msg, "slack-notifications-trace")); }
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")); }
public Task ProcessInfoMessage(SlackNotificationRequestMsg msg) { return(ProcessMessageFromQueue(msg, "slack-notifications-information")); }
public Task ProcessErrorMessage(SlackNotificationRequestMsg msg) { return(ProcessMessageFromQueue(msg, "slack-notifications-error")); }
public Task ProcessCriticalMessage(SlackNotificationRequestMsg msg) { return(ProcessMessageFromQueue(msg, "slack-notifications-critical")); }