Пример #1
0
        private static T CreateHandler <T>(SlackRequestContext context, Func <SlackRequestContext, T> handlerFactory)
        {
            if (context.ContainsKey(RequestHandler))
            {
                throw new InvalidOperationException("Handler already created for this request");
            }

            var handler = handlerFactory(context);

            context[RequestHandler] = handler;
            return(handler);
        }
Пример #2
0
        private static T GetOrCreateHandler <T>(SlackRequestContext context, Func <T> handlerFactory)
        {
            if (!(context[RequestHandlers] is Dictionary <Type, object> instances))
            {
                context[RequestHandlers] = instances = new Dictionary <Type, object>();
            }

            if (!instances.TryGetValue(typeof(T), out var handler))
            {
                instances[typeof(T)] = handler = handlerFactory();
            }

            return((T)handler);
        }
Пример #3
0
 public IDialogSubmissionHandler CreateLegacyDialogSubmissionHandler(SlackRequestContext context) => GetOrCreateHandler(context, _legacyDialogSubmissionHandler);
Пример #4
0
 public IOptionProvider CreateLegacyOptionProvider(SlackRequestContext context) => GetOrCreateHandler(context, _legacyOptionProvider);
Пример #5
0
 public IInteractiveMessageHandler CreateLegacyInteractiveMessageHandler(SlackRequestContext context) => GetOrCreateHandler(context, _legacyInteractiveMessageHandler);
Пример #6
0
 public IAsyncWorkflowStepEditHandler CreateWorkflowStepEditHandler(SlackRequestContext context) => GetOrCreateHandler(context, _workflowStepEditHandler);
Пример #7
0
 public IAsyncSlashCommandHandler CreateSlashCommandHandler(SlackRequestContext context) => GetOrCreateHandler(context, _slashCommandHandler);
Пример #8
0
 public IAsyncViewSubmissionHandler CreateViewSubmissionHandler(SlackRequestContext context) => GetOrCreateHandler(context, _viewSubmissionHandler);
Пример #9
0
 public IAsyncGlobalShortcutHandler CreateGlobalShortcutHandler(SlackRequestContext context) => GetOrCreateHandler(context, _globalShortcutHandler);
Пример #10
0
 public IAsyncMessageShortcutHandler CreateMessageShortcutHandler(SlackRequestContext context) => GetOrCreateHandler(context, _messageShortcutHandler);
Пример #11
0
 public IBlockOptionProvider CreateBlockOptionProvider(SlackRequestContext context) => GetOrCreateHandler(context, _blockOptionProvider);
Пример #12
0
 public IAsyncBlockActionHandler CreateBlockActionHandler(SlackRequestContext context) => GetOrCreateHandler(context, _blockActionHandler);
Пример #13
0
 public IEventHandler CreateEventHandler(SlackRequestContext context) => GetOrCreateHandler(context, _eventHandler);
Пример #14
0
 public HandlerCollection(SlackRequestContext context, IEnumerable <Func <SlackRequestContext, T> > handlerFactories) =>
Пример #15
0
 public HandlerIndex(SlackRequestContext requestContext, IReadOnlyDictionary <string, Func <SlackRequestContext, THandler> > handlers) =>