コード例 #1
0
        public ListMiddleware(ILogger <ListMiddleware> logger,
                              ConfigurationSection configuration,
                              IEnumerable <IChatServiceConnection> chatServiceConnections,
                              BotMetadataProvider botMetadataProvider)
        {
            _middlewareVerbs = new Dictionary <string, string>();

            foreach (var middleware in botMetadataProvider.RunningMiddlewares)
            {
                if (middleware.IsSummonable && middleware.Enabled)
                {
                    _middlewareVerbs.Add(middleware.SummonVerb, middleware.Name);
                }
            }

            this.chatServiceConnections = chatServiceConnections;
        }
コード例 #2
0
        public InfoMiddleware(ILogger <InfoMiddleware> logger,
                              ConfigurationSection configuration,
                              IEnumerable <IChatServiceConnection> chatServiceConnections,
                              BotMetadataProvider botMetadataProvider)
        {
            var orderedMiddlewareList = botMetadataProvider.RunningMiddlewares
                                        .Where(mw => mw.Enabled && mw.ExecutionOrderNumber != 0);
            var unorderedMiddlewareList = botMetadataProvider.RunningMiddlewares
                                          .Where(mw => mw.Enabled && mw.ExecutionOrderNumber == 0 && mw.Configured);
            var unconfiguredMiddlewareList = botMetadataProvider.RunningMiddlewares
                                             .Where(mw => mw.Enabled && !mw.Configured);
            var disabledMiddlewareList = botMetadataProvider.RunningMiddlewares
                                         .Where(mw => !mw.Enabled);

            // order middleware by
            //   1. ordered enabled MW in execution order
            //   2. enabled MW that was not explicitly ordered
            //   3. potentially enabled, but unconfigured MW

            List <string> orderedMiddlewareNamesList = new List <string>();

            orderedMiddlewareNamesList.AddRange(
                orderedMiddlewareList.OrderBy(mw => mw.ExecutionOrderNumber).Select(mw => mw.Name)
                );
            orderedMiddlewareNamesList.AddRange(
                unorderedMiddlewareList.Select(mw => mw.Name)
                );
            orderedMiddlewareNamesList.AddRange(
                unconfiguredMiddlewareList.Select(mw => mw.Name)
                );

            _orderedMiddleware = string.Join(" -> ", orderedMiddlewareNamesList);
            _alphabeticallyOrderedMiddleware = string.Join(
                ", ",
                botMetadataProvider.RunningMiddlewares
                .Select(mw => mw.Enabled ? mw.Name : mw.Name + " (d)").OrderBy(str => str));
            _disabledMiddleware = string.Join(", ", disabledMiddlewareList.Select(mw => mw.Name));

            this.chatServiceConnections = chatServiceConnections;
        }