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; }
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; }