Esempio n. 1
0
        private EventProcessor[] GetEventProcessorsForSlackEventType(SlackEventType slackEventType, ChannelProcessingConfiguration <EventProcessor> eventProcessors)
        {
            var result = new EventProcessor[0];

            if (eventProcessors?.EventConfigurations == null)
            {
                return(result);
            }

            if (eventProcessors.EventConfigurations.TryGetValue(slackEventType.ToString(), out var ownEventProcessors))
            {
                if (ownEventProcessors != null)
                {
                    result = result.Concat(ownEventProcessors).ToArray();
                }
            }

            if (eventProcessors.EventConfigurations.TryGetValue("*", out var genericEventProcessors))
            {
                if (genericEventProcessors != null)
                {
                    result = result.Concat(genericEventProcessors).ToArray();
                }
            }

            return(result);
        }
Esempio n. 2
0
        private EventProcessor[] GetEventProcessorsForChannel(string channelId, SlackEventType slackEventType, TeamProcessingConfiguration <EventProcessor> eventProcessors)
        {
            var result = new EventProcessor[0];

            if (eventProcessors?.ChannelConfigurations == null)
            {
                return(result);
            }

            if (eventProcessors.ChannelConfigurations.TryGetValue(channelId, out var ownEventProcessors))
            {
                if (ownEventProcessors != null)
                {
                    result = result.Concat(GetEventProcessorsForSlackEventType(slackEventType, ownEventProcessors)).ToArray();
                }
            }

            if (eventProcessors.ChannelConfigurations.TryGetValue("*", out var genericEventProcessors))
            {
                if (genericEventProcessors != null)
                {
                    result = result.Concat(GetEventProcessorsForSlackEventType(slackEventType, genericEventProcessors)).ToArray();
                }
            }

            return(result);
        }
        public async Task MessageOnChannel_IsRoutedCorrectly(string inputEvent, SlackEventType expectedEvent)
        {
            var slackBody = GetSlackEventBody(inputEvent);

            var slackRouterMock = new Mock <ISlackEventHandler>();

            var slackEventIdentifier = new SlackEventIdentifier(slackRouterMock.Object);

            await slackEventIdentifier.IdentifySlackEventAsync(slackBody.Body, CancellationToken.None);

            slackRouterMock.Verify(x => x.HandleSlackEventAsync(It.Is <SlackEventType>(
                                                                    type => type == expectedEvent), slackBody.Body, CancellationToken.None), Times.Once);
        }
Esempio n. 4
0
        public async Task HandleSlackEventAsync(
            SlackEventType slackEventType, SlackEventBody slackEventBody, CancellationToken cancellationToken)
        {
            var eventsProcessors = _eventProcessorProvider.GetEventProcessors(
                slackEventBody.TeamId,
                slackEventBody.Event.Channel,
                slackEventType);

            await Task.WhenAll(
                eventsProcessors.Select(
                    e
                    => e.MatchAndProcessAsync(slackEventBody, cancellationToken)));
        }
Esempio n. 5
0
        public EventProcessor[] GetEventProcessors(
            string teamId,
            string channelId,
            SlackEventType slackEventType)
        {
            var result = new EventProcessor[0];

            if (_eventProcessors?.TeamConfigurations != null &&
                _eventProcessors.TeamConfigurations.TryGetValue(teamId, out var teamEventProcessors))
            {
                return(GetEventProcessorsForChannel(channelId, slackEventType, teamEventProcessors));
            }

            return(result);
        }