Ejemplo n.º 1
0
        public IEventReaction Generate(
            EventWrapper eventWrapper)
        {
            if (eventWrapper.Event == null)
            {
                throw new InvalidOperationException(
                          "EventWrapper does not hold any callback event");
            }

            return(eventWrapper.Event switch
            {
                AppMentionEvent _ => _appMentionEventReactionFactory.Create(
                    eventWrapper),
                _ => _noopEventReactionFactory.Create(eventWrapper),
            });
        public async Task ReactAsync(EventBase @event, CancellationToken cancellationToken)
        {
            var context = @event.GetContext();

            var reactions = fFactory.Create(@event).ToArray();

            if (reactions.Length == 0)
            {
                fLogger.LogInformation(context, $"No reaction for event '{@event.GetType()}'");
                return;
            }

            // TODO: Paralelized reacting
            foreach (var reaction in reactions)
            {
                await reaction.ReactAsync(@event, cancellationToken);
            }
        }