/// <summary>
        /// Registers ApplicationInsightsTracer
        /// </summary>
        /// <param name="services"></param>
        /// <returns></returns>
        public static IDotvvmServiceCollection AddApplicationInsightsTracing(this IDotvvmServiceCollection services)
        {
            services.AddApplicationInsightsTracingInternal();
            services.Services.AddTransient <IConfigureOptions <DotvvmConfiguration>, ApplicationInsightSetup>();

            return(services);
        }
Ejemplo n.º 2
0
        public static void ConfigureServices(IDotvvmServiceCollection dotvvmServices)
        {
            var services = dotvvmServices.Services;

            // normally, you'd put that to DotvvmStartup, but I need to test both options
            services.Configure <DotvvmMarkupConfiguration>(config => {
                // import namespaces
                config.ImportedNamespaces.Add(new Framework.Compilation.NamespaceImport("DotVVM.Samples.BasicSamples.TestNamespace1", "TestNamespaceAlias"));
                config.ImportedNamespaces.Add(new Framework.Compilation.NamespaceImport("DotVVM.Samples.BasicSamples.TestNamespace2"));
            });
            services.AddScoped <DotVVM.Samples.BasicSamples.ViewModels.FeatureSamples.Redirect.RedirectService>();
            services.Configure <DotvvmResourceRepository>(RegisterResources);

            services.Configure <JavascriptTranslatorConfiguration>(c => {
                c.MethodCollection.AddMethodTranslator(typeof(JavaScriptUtils),
                                                       nameof(JavaScriptUtils.LimitLength),
                                                       new GenericMethodCompiler((a) => new JsIdentifierExpression("limitLength").Invoke(a)));
            });

            dotvvmServices.AddDefaultTempStorages("Temp");
            services.AddScoped <ViewModelScopedDependency>();
            services.AddSingleton <IGreetingComputationService, HelloGreetingComputationService>();
            services.AddSingleton <FoodSevice>();

            services.AddSingleton <IViewModelServerStore, TestingInMemoryViewModelServerStore>();

            services.AddSingleton <ResetClient>();
            services.AddSingleton <OrdersClient>();
            services.AddSingleton <CompaniesClient>();
            services.AddSingleton <TestWebApiClientOwin>();
            services.AddSingleton <TestWebApiClientAspNetCore>();
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Adds Server Side ViewModel Cache Diagnostics to the application.
        /// </summary>
        public static IDotvvmServiceCollection AddServerSideCacheDiagnostics(this IDotvvmServiceCollection services, ServerSideCacheDiagnosticsOptions options = null)
        {
            if (options == null)
            {
                options = ServerSideCacheDiagnosticsOptions.CreateDefaultOptions();
            }
            services.Services.AddSingleton <ServerSideCacheDiagnosticsOptions>(options);
            services.Services.AddSingleton <DiagnosticsDataStore>();

            services.Services.AddSingleton <IViewModelServerStore, DiagnosticsViewModelServerStore>();
            services.Services.AddSingleton <IViewModelServerCache, DiagnosticsViewModelServerCache>();

            services.Services.AddSingleton <DefaultViewModelSerializer>();
            services.Services.AddSingleton <DefaultViewModelServerCache>();
            services.Services.Replace(ServiceDescriptor.Singleton <IViewModelSerializer>(provider => new DiagnosticsViewModelSerializerDecorator(
                                                                                             provider.GetService <DefaultViewModelSerializer>(),
                                                                                             provider.GetService <DiagnosticsDataStore>()
                                                                                             )));

            services.Services.Configure((DotvvmConfiguration config) =>
            {
                config.RouteTable.Add(options.RouteName, options.Url, "embedded://DotVVM.Diagnostics.ServerSideCache/Pages.Report.dothtml");
            });

            return(services);
        }
        public void ConfigureServices(IDotvvmServiceCollection options)
        {
            //register only services that are supported by DotVVM (otherwise, register your services in Startup.cs)
            options.AddDefaultTempStorages("Temp");

            options.AddBusinessPack();
        }
Ejemplo n.º 5
0
        public void ConfigureServices(IDotvvmServiceCollection options)
        {
            options.Services.AddSingleton <DataSourceService>();

            options.AddBusinessPack();
            options.AddDefaultTempStorages("temp");
        }
Ejemplo n.º 6
0
        public void ConfigureServices(IDotvvmServiceCollection options)
        {
            options.AddDefaultTempStorages("App_Data\\temp");

            options.Services.AddScoped <TasksService>();
            options.Services.AddScoped <CategoriesService>();
        }
 public void ConfigureServices(IDotvvmServiceCollection options)
 {
     options.AddDefaultTempStorages("temp");
     options.AddUploadedFileStorage("App_Data/Temp");
     options.AddSeleniumGenerator(o =>
     {
         //o.AddCustomGenerator(new ControlBSeleniumGenerator());
     });
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Adds file system returned file storage to the application. See <see cref="IReturnedFileStorage" /> for more details.
 /// </summary>
 /// <param name="services">The <see cref="IDotvvmServiceCollection" /> instance.</param>
 /// <param name="tempPath">The absolute or relative path to directory where to store temporary files.</param>
 /// <param name="autoDeleteInterval">The interval to delete the temporary files after.</param>
 public static IDotvvmServiceCollection AddReturnedFileStorage(this IDotvvmServiceCollection services, string tempPath, TimeSpan autoDeleteInterval)
 {
     services.Services.TryAddSingleton <IReturnedFileStorage>(s =>
     {
         var fullPath = Path.Combine(s.GetService <DotvvmConfiguration>().ApplicationPhysicalPath, tempPath);
         return(new FileSystemReturnedFileStorage(fullPath, autoDeleteInterval));
     });
     return(services);
 }
Ejemplo n.º 9
0
        /// <summary>
        /// Registers ApplicationInsightsTracer
        /// </summary>
        /// <param name="services"></param>
        /// <returns></returns>
        public static IDotvvmServiceCollection AddApplicationInsightsTracing(this IDotvvmServiceCollection services)
        {
            TelemetryConfiguration.Active.TelemetryProcessorChainBuilder.Use(next => new RequestTelemetryFilter(next)).Build();

            services.Services.TryAddSingleton <TelemetryClient>();
            services.AddDotvvmApplicationInsights();
            services.Services.AddTransient <IConfigureOptions <DotvvmConfiguration>, ApplicationInsightSetup>();

            return(services);
        }
Ejemplo n.º 10
0
        public static void AddSeleniumGenerator(this IDotvvmServiceCollection services,
                                                Action <SeleniumGeneratorOptions> optionsBuilder = null)
        {
            services.Services.AddSingleton <SeleniumGeneratorOptions>(provider =>
            {
                var options = new SeleniumGeneratorOptions();
                optionsBuilder?.Invoke(options);

                return(options);
            });
        }
 public void ConfigureServices(IDotvvmServiceCollection options)
 {
     options.AddStatusPage(pageOptions =>
     {
         pageOptions.CompileAfterPageLoads = false;
     });
     options.AddStatusPageApi(apiOptions =>
     {
         apiOptions.NonAuthorizedApiAccessMode = NonAuthorizedApiAccessMode.DetailedResponse;
     });
     options.AddDefaultTempStorages("temp");
 }
Ejemplo n.º 12
0
        public static IDotvvmServiceCollection AddMiniProfilerEventTracing(IDotvvmServiceCollection services)
        {
            services.Services.AddTransient <IRequestTracer, MiniProfilerTracer>();
            services.Services.Configure((MiniProfilerOptions opt) => opt.IgnoredPaths.Add("/dotvvmResource/"));

            services.Services.Configure((DotvvmConfiguration conf) =>
            {
                conf.Markup.AddCodeControls(DotvvmConfiguration.DotvvmControlTagPrefix, typeof(MiniProfilerWidget));
                conf.Runtime.GlobalFilters.Add(
                    new MiniProfilerActionFilter(conf.ServiceProvider.GetService <IOptions <MiniProfilerOptions> >()));
            });
            return(services);
        }
        public static void AddViewHotReload(this IDotvvmServiceCollection services, DotvvmViewHotReloadOptions options = null)
        {
            services.Services.AddSingleton <IMarkupFileChangeNotifier, OwinMarkupFileChangeNotifier>();
            services.Services.AddSingleton <IMarkupFileLoader, HotReloadAggregateMarkupFileLoader>();

            services.Services.Configure <DotvvmConfiguration>(config => RegisterResources(config, options ?? new DotvvmViewHotReloadOptions()));
            services.Services.AddTransient <ResourceManager>(provider =>
            {
                var manager = new ResourceManager(provider.GetRequiredService <DotvvmResourceRepository>());
                manager.AddRequiredResource("dotvvm-viewhotreload");
                return(manager);
            });
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Adds diagnostic services required for DotVVM Diagnostic Window to work.
        /// DotVVM Diagnostic Window helps with debugging postbacks and highlighting requests with potential issues during development time.
        /// </summary>
        /// <param name="services">The <see cref="IDotvvmServiceCollection" /> instance.</param>
        public static IDotvvmServiceCollection AddDiagnosticServices(this IDotvvmServiceCollection services)
        {
            services.Services.TryAddSingleton <DotvvmDiagnosticsConfiguration>();
            services.Services.TryAddSingleton <IDiagnosticsInformationSender, DiagnosticsInformationSender>();

            services.Services.TryAddSingleton <IOutputRenderer, DiagnosticsRenderer>();
            services.Services.AddScoped <DiagnosticsRequestTracer>(s => new DiagnosticsRequestTracer(s.GetRequiredService <IDiagnosticsInformationSender>()));
            services.Services.AddScoped <IRequestTracer>(s => {
                var config = s.GetRequiredService <DotvvmConfiguration>();
                return((config.Debug ? (IRequestTracer)s.GetService <DiagnosticsRequestTracer>() : null) ?? new NullRequestTracer());
            });

            return(services);
        }
Ejemplo n.º 15
0
        public void ConfigureServices(IDotvvmServiceCollection options)
        {
            options.AddBusinessPack();

            options.AddStatusPage();

            options.AddDefaultTempStorages("Temp");
            options.AddMiniProfilerEventTracing();
            options.AddApplicationInsightsTracing();

            var dynamicDataConfig = new AppDynamicDataConfiguration();

            options.AddDynamicData(dynamicDataConfig);
        }
        /// <summary>
        /// Registers MiniProfiler tracer and MiniProfilerWidget
        /// </summary>
        /// <param name="services"></param>
        /// <returns></returns>
        public static IDotvvmServiceCollection AddMiniProfilerEventTracing(this IDotvvmServiceCollection services)
        {
            services.Services.AddScoped <IRequestTracer, MiniProfilerTracer>();
            services.Services.AddScoped <IMiniProfilerRequestTracer, MiniProfilerTracer>();
            services.Services.AddScoped <IRequestTimingStorage, DotvvmTimingStorage>();

            services.Services.Configure((MiniProfilerOptions opt) =>
            {
                opt.IgnoredPaths.Add("/dotvvmResource/");
            });

            services.Services.AddTransient <IConfigureOptions <DotvvmConfiguration>, MiniProfilerSetup>();
            return(services);
        }
Ejemplo n.º 17
0
        public static void AddViewHotReload(this IDotvvmServiceCollection services)
        {
            services.Services.AddSignalR();

            services.Services.AddSingleton <IMarkupFileChangeNotifier, AspNetCoreMarkupFileChangeNotifier>();
            services.Services.AddSingleton <IMarkupFileLoader, HotReloadAggregateMarkupFileLoader>();

            services.Services.Configure <DotvvmConfiguration>(RegisterResources);
            services.Services.AddTransient <ResourceManager>(provider =>
            {
                var manager = new ResourceManager(provider.GetRequiredService <DotvvmResourceRepository>());
                manager.AddRequiredResource("dotvvm-viewhotreload");
                return(manager);
            });
        }
        /// <summary>
        /// Registers ApplicationInsightsTracer
        /// </summary>
        /// <param name="services"></param>
        /// <returns></returns>
        public static IDotvvmServiceCollection AddApplicationInsightsTracing(this IDotvvmServiceCollection services)
        {
            if (!services.Services.Any(s => s.ServiceType == typeof(TelemetryClient)))
            {
                throw new InvalidOperationException("Application Insights must be configured before DotVVM. Make sure you call services.AddApplicationInsightsTelemetry(configuration) before services.AddDotVVM<DotvvmStartup>().");
            }

            services.Services.AddHttpContextAccessor();
            services.AddDotvvmApplicationInsights();

            services.Services.AddApplicationInsightsTelemetryProcessor <RequestTelemetryFilter>();

            services.Services.TryAddSingleton <JavaScriptSnippet>();
            services.Services.AddTransient <IConfigureOptions <DotvvmConfiguration>, ApplicationInsightSetup>();

            return(services);
        }
        /// <summary>
        /// Adds Compilation Status Page to the application.
        /// </summary>
        public static IDotvvmServiceCollection AddStatusPage(this IDotvvmServiceCollection services, StatusPageOptions options)
        {
            if (options == null)
            {
                options = StatusPageOptions.CreateDefaultOptions();
            }

            services.Services.AddSingleton <StatusPageOptions>(options);
            services.Services.AddTransient <StatusPagePresenter>();

            services.Services.Configure((DotvvmConfiguration config) =>
            {
                config.RouteTable.Add(options.RouteName, options.Url, "embedded://DotVVM.Diagnostics.StatusPage/Status.dothtml", null, s => s.GetService <StatusPagePresenter>());
            });

            return(services);
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Registers all services required by DotVVM Dynamic Data.
        /// </summary>
        public static IDotvvmServiceCollection AddDynamicData(this IDotvvmServiceCollection services, DynamicDataConfiguration dynamicDataConfiguration = null)
        {
            if (dynamicDataConfiguration == null)
            {
                dynamicDataConfiguration = new DynamicDataConfiguration();
            }

            // add the configuration of Dynamic Data to the service collection
            services.Services.AddSingleton(serviceProvider => dynamicDataConfiguration);

            RegisterDefaultProviders(services.Services, dynamicDataConfiguration);
            if (dynamicDataConfiguration.UseLocalizationResourceFiles)
            {
                RegisterResourceFileProviders(services.Services, dynamicDataConfiguration);
            }

            return(services);
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Registers MiniProfiler tracer and MiniProfilerWidget
        /// </summary>
        /// <param name="services"></param>
        /// <returns></returns>
        public static IDotvvmServiceCollection AddMiniProfilerEventTracing(this IDotvvmServiceCollection services)
        {
            services.Services.AddScoped <IRequestTracer, MiniProfilerTracer>();
            services.Services.AddScoped <IMiniProfilerRequestTracer, MiniProfilerTracer>();
            services.Services.AddScoped <IRequestTimingStorage, DotvvmTimingStorage>();

            services.Services.Configure((MiniProfilerOptions opt) =>
            {
                opt.IgnoredPaths.Add("/dotvvmResource/");
            });

            services.Services.Configure((DotvvmConfiguration conf) =>
            {
                conf.Markup.AddCodeControls(DotvvmConfiguration.DotvvmControlTagPrefix, typeof(MiniProfilerWidget));
                conf.Runtime.GlobalFilters.Add(new MiniProfilerActionFilter());
            });

            return(services);
        }
Ejemplo n.º 22
0
        public static void AddDotvvmAmpSupport(this IDotvvmServiceCollection serviceCollection, Action <DotvvmAmpConfiguration, ILogger> modifyConfiguration = null)
        {
            serviceCollection.Services.AddSingleton <IAmpPresenter, DotvvmAmpPresenter>();
            serviceCollection.Services.AddFactory <IAmpStylesheetResourceCollection, AmpStylesheetResourceCollection>();

            serviceCollection.Services.AddSingleton <IAmpOutputRenderer, AmpOutputRenderer>();
            serviceCollection.Services.AddSingleton <IAmpDotvvmViewBuilder, AmpViewBuilder>();
            serviceCollection.Services.AddSingleton <IAmpControlTransformsRegistry, AmpControlTransformsRegistry>();
            serviceCollection.Services.AddSingleton <IAmpValidator, AmpValidator>();
            serviceCollection.Services.AddSingleton <IAmpRouteManager, AmpRouteManager>();
            serviceCollection.Services.AddSingleton <IAmpExternalResourceMetadataCache, AmpExternalResourceMetadataCache>();

            serviceCollection.Services.AddSingleton <DotvvmAmpConfiguration>(provider =>
            {
                var registry     = provider.GetService <IAmpControlTransformsRegistry>();
                var routeManager = provider.GetService <IAmpRouteManager>();
                var logger       = provider.GetService <ILogger>();
                var externalResourceMetadataCache = provider.GetService <IAmpExternalResourceMetadataCache>();
                var config = new DotvvmAmpConfiguration(registry, routeManager, externalResourceMetadataCache);
                RegisterTransforms(config, logger);
                modifyConfiguration?.Invoke(config, logger);
                return(config);
            });
        }
Ejemplo n.º 23
0
 public void ConfigureServices(IDotvvmServiceCollection options)
 {
     options
     .AddDefaultTempStorages("temp")
     .AddApplicationInsightsTracing();
 }
Ejemplo n.º 24
0
 public void ConfigureServices(IDotvvmServiceCollection services)
 {
     CommonConfiguration.ConfigureServices(services);
 }
Ejemplo n.º 25
0
 public void ConfigureServices(IDotvvmServiceCollection options)
 {
     options.AddDefaultTempStorages("Temp");
     options.AddMiniProfilerEventTracing();
     options.Services.AddTransient <DefaultStaticCommandService>();
 }
Ejemplo n.º 26
0
 public void ConfigureServices(IDotvvmServiceCollection options)
 {
     options.AddBusinessPack();
     options.AddDefaultTempStorages("temp");
 }
Ejemplo n.º 27
0
 public void ConfigureServices(IDotvvmServiceCollection services)
 {
     CommonConfiguration.ConfigureServices(services);
     services.AddDefaultTempStorages("Temp");
 }
Ejemplo n.º 28
0
 public void ConfigureServices(IDotvvmServiceCollection services)
 {
     services.AddDefaultTempStorages("temp");
 }
 public void ConfigureServices(IDotvvmServiceCollection options)
 {
     options.AddDefaultTempStorages("Temp");
 }
Ejemplo n.º 30
0
 /// <summary>
 /// Adds file system returned file storage to the application. See <see cref="IReturnedFileStorage" /> for more details.
 /// </summary>
 /// <param name="services">The <see cref="IDotvvmServiceCollection" /> instance.</param>
 /// <param name="tempPath">The absolute or relative path to directory where to store temporary files.</param>
 public static IDotvvmServiceCollection AddReturnedFileStorage(this IDotvvmServiceCollection services, string tempPath)
 => services.AddReturnedFileStorage(tempPath, TimeSpan.FromMinutes(30));