Example #1
0
 internal FormatDetectionStep(PreprocessingStepParams srcFile, IExtensionsRegistry extentions, IStepsFactory preprocessingStepsFactory, IFileSystem fileSystem)
 {
     this.sourceFile = srcFile;
     this.preprocessingStepsFactory = preprocessingStepsFactory;
     this.extentions = extentions;
     this.fileSystem = fileSystem;
 }
Example #2
0
 public PreprocessingStepsFactory(
     Workspaces.IWorkspacesManager workspacesManager,
     AppLaunch.ILaunchUrlParser appLaunch,
     ISynchronizationContext invoke,
     IExtensionsRegistry extentions,
     Progress.IProgressAggregator progressAggregator,
     Persistence.IWebContentCache cache,
     ICredentialsCache credCache,
     ILogProviderFactoryRegistry logProviderFactoryRegistry,
     WebViewTools.IWebViewTools webBrowserDownloader,
     ILogsDownloaderConfig logsDownloaderConfig,
     RegularExpressions.IRegexFactory regexFactory
     )
 {
     this.workspacesManager  = workspacesManager;
     this.appLaunch          = appLaunch;
     this.invoke             = invoke;
     this.extentions         = extentions;
     this.progressAggregator = progressAggregator;
     this.cache     = cache;
     this.credCache = credCache;
     this.logProviderFactoryRegistry = logProviderFactoryRegistry;
     this.webViewTools         = webBrowserDownloader;
     this.logsDownloaderConfig = logsDownloaderConfig;
     this.regexFactory         = regexFactory;
 }
        public LogSourcesPreprocessingManager(
            ISynchronizationContext invokeSynchronize,
            IFormatAutodetect formatAutodetect,
            IExtensionsRegistry extensions,
            IPreprocessingManagerExtension builtinStepsExtension,
            Telemetry.ITelemetryCollector telemetry,
            ITempFilesManager tempFilesManager,
            ILogSourcesManager logSourcesManager,
            IShutdown shutdown,
            ITraceSourceFactory traceSourceFactory,
            IChangeNotification changeNotification
            )
        {
            this.traceSourceFactory = traceSourceFactory;
            this.trace                   = traceSourceFactory.CreateTraceSource("PreprocessingManager", "prepr");
            this.invokeSynchronize       = invokeSynchronize;
            this.formatAutodetect        = formatAutodetect;
            this.providerYieldedCallback = prov => logSourcesManager.Create(prov.Factory, prov.ConnectionParams).Visible = !prov.IsHiddenLog;
            this.extensions              = extensions;
            this.telemetry               = telemetry;
            this.tempFilesManager        = tempFilesManager;
            this.logSourcesManager       = logSourcesManager;
            this.changeNotification      = changeNotification;

            extensions.Register(builtinStepsExtension);

            shutdown.Cleanup += (sender, e) =>
            {
                shutdown.AddCleanupTask(this.DeleteAllPreprocessings());
            };
        }
Example #4
0
 public Model(
     IManager manager,
     IStepsFactory stepsFactory,
     IExtensionsRegistry extentionsRegistry
     )
 {
     this.Manager            = manager;
     this.StepsFactory       = stepsFactory;
     this.ExtensionsRegistry = extentionsRegistry;
 }
            static void SetFileProvides(IServiceCollection services, IExtensionsRegistry registry, ILoggerFactory loggerFactory)
            {
                var hostingEnvironment = services.BuildServiceProvider().GetRequiredService <IHostingEnvironment>();

                hostingEnvironment.WebRootFileProvider = new ExtensionsFileProviderAggregator(loggerFactory
                                                                                              , (registry as ExtensionsRegistry)?.Extensions
                                                                                              , hostingEnvironment.WebRootFileProvider).Composite;
                hostingEnvironment.ContentRootFileProvider = new ExtensionsFileProviderAggregator(loggerFactory
                                                                                                  , (registry as ExtensionsRegistry)?.Extensions
                                                                                                  , hostingEnvironment.ContentRootFileProvider).Composite;
            }
Example #6
0
 public void Setup()
 {
     workspacesManager         = Substitute.For <IWorkspacesManager>();
     appLaunch                 = Substitute.For <ILaunchUrlParser>();
     preprocessingStepsFactory = Substitute.For <IStepsFactory>();
     extensions                = Substitute.For <IExtensionsRegistry>();
     preprocessingStepsFactory.CreateURLTypeDetectionStep(null).ReturnsForAnyArgs(
         callInfo => new URLTypeDetectionStep(
             callInfo.Arg <PreprocessingStepParams>(), preprocessingStepsFactory, workspacesManager, appLaunch, extensions));
     callback = Substitute.For <IPreprocessingStepCallback>();
 }
 internal URLTypeDetectionStep(
     PreprocessingStepParams srcFile,
     IStepsFactory preprocessingStepsFactory,
     Workspaces.IWorkspacesManager workspacesManager,
     AppLaunch.ILaunchUrlParser appLaunch,
     IExtensionsRegistry extensions
     )
 {
     this.sourceFile = srcFile;
     this.preprocessingStepsFactory = preprocessingStepsFactory;
     this.workspacesManager         = workspacesManager;
     this.appLaunch  = appLaunch;
     this.extensions = extensions;
 }
            // make extensions available to MVC application, configures extensions and configures extension services (SRP, split?)
            static void AddApplicationParts(IMvcBuilder mvcBuilder, IExtensionsRegistry registry, IServiceCollection services, IConfiguration configuration, ILoggerFactory loggerFactory)
            {
                foreach (var extension in (registry as ExtensionsRegistry)?.Extensions)
                {
                    var assembly = extension.GetType().Assembly;
                    mvcBuilder.AddApplicationPart(assembly);

                    if (extension is IExtensionWithViews)
                    {
                        // load compiled views
                        var directory         = extension.Location;
                        var viewsAssemblyName = (extension as IExtensionWithViews).Views;
                        var logger            = loggerFactory.CreateLogger(nameof(ExtensionsConfigurator));
                        var viewsAssembly     = ExtensionsLoader.LoadAssembly(Path.Combine(directory, viewsAssemblyName), logger);
                        mvcBuilder.AddApplicationPart(viewsAssembly);
                    }

                    extension.ConfigureServices(services, configuration);
                }
            }
Example #9
0
        public RequestMiddleware(RequestDelegate next, IExtensionsRegistry registry, IActionDescriptorCollectionProvider actionDescriptorCollectionProvider)
        {
            this.next     = next;
            this.registry = registry;

            this.routes = new Dictionary <string, IExtension>();
            var extAssemblyNames     = this.registry.Extensions.Select(t => Path.GetFileName(t.Location));
            var extensionControllers = actionDescriptorCollectionProvider.ActionDescriptors.Items.Where(x =>
            {
                var parts = x.DisplayName.Split('.');
                var extensionAssemblyFileName = parts.Length > 0 ? parts[0] : string.Empty;
                if (extAssemblyNames.Any(t => t == extensionAssemblyFileName))
                {
                    var route     = $"/{x.AttributeRouteInfo?.Template}";
                    var extension = this.registry.Extensions.SingleOrDefault(x => Path.GetFileName(x.Location) == extensionAssemblyFileName);

                    /*
                     * There might be duplicates because of same roots but different verbs (GET, POST, PUT, DELETE)
                     */
                    if (this.routes.ContainsKey(route) == false)
                    {
                        this.routes.Add(route, extension);
                    }
                    else
                    {
                        var existingExtension = this.routes[route];
                        if (existingExtension != extension)
                        {
                            throw new InvalidOperationException($"Route '{route}' is handled by more than on extension.");
                        }
                    }
                }

                return(true);
            }).ToArray();
        }
Example #10
0
 public CustomSwaggerFilter(IHttpContextAccessor contextAccessor, IExtensionsRegistry registry, int v)
 {
     this.contextAccessor = contextAccessor;
     this.registry        = registry;
 }
            static void ReplaceControllerFeatureProvider(IServiceCollection services, IExtensionsRegistry registry, ILoggerFactory loggerFactory)
            {
                var provider    = services.BuildServiceProvider();
                var partManager = provider.GetRequiredService <ApplicationPartManager>();
                var controllerFeatureProvider = partManager.FeatureProviders.SingleOrDefault(p => p is ControllerFeatureProvider);

                partManager.FeatureProviders.Remove(controllerFeatureProvider);
                partManager.FeatureProviders.Add(new ExtensionsControllerFeatureProvider(registry, loggerFactory));
            }
Example #12
0
 public HomeController(IExtensionsRegistry registry)
 {
     this.registry = registry;
 }
Example #13
0
 public WebApisController(IExtensionsRegistry extensionsRegistry, SwaggerSelector selectorService)
 {
     this.extensionsRegistry = extensionsRegistry;
     this.selectorService    = selectorService;
 }
Example #14
0
 private ExtensionsLoader(ILoggerFactory factory, IExtensionsRegistry registry)
 {
     this.factory  = factory ?? throw new ArgumentNullException(nameof(factory));
     this.logger   = factory.CreateLogger <ExtensionsLoader>();
     this.registry = registry;
 }
 public ExtensionsControllerFeatureProvider(IExtensionsRegistry registry, ILoggerFactory loggerFactory)
 {
     this.logger   = loggerFactory.CreateLogger <ExtensionsControllerFeatureProvider>();
     this.registry = registry;
 }