-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathServiceCollectionExtensions.cs
More file actions
61 lines (51 loc) · 2.71 KB
/
ServiceCollectionExtensions.cs
File metadata and controls
61 lines (51 loc) · 2.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
namespace WindowsWebServiceManager;
using System;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using WindowsWebServiceManager.Cli;
using WindowsWebServiceManager.Cli.Commands;
using WindowsWebServiceManager.Common;
using WindowsWebServiceManager.Services;
using WindowsWebServiceManager.Services.CacheReset;
using WindowsWebServiceManager.Services.Managers;
public static class ServiceCollectionExtensions
{
public static IServiceCollection AddWebServiceManagement(this IServiceCollection services, IConfiguration configuration)
{
if (services == null) throw new ArgumentNullException(nameof(services));
if (configuration == null) throw new ArgumentNullException(nameof(configuration));
services.Configure<WebServiceManagerOptions>(configuration.GetSection("WebServiceManager"));
services.PostConfigure<WebServiceManagerOptions>(opts =>
{
opts.ServiceAccount = opts.ServiceAccount.ApplyEnvironment(Environment.GetEnvironmentVariable);
opts.Validate();
});
services.AddSingleton(sp =>
sp.GetRequiredService<Microsoft.Extensions.Options.IOptions<WebServiceManagerOptions>>().Value);
services.AddHttpClient();
services.AddSingleton<IHealthCheckService, HealthCheckService>();
services.AddSingleton<IIisDiscoveryService, IisDiscoveryService>();
services.AddSingleton<IWebAppRepository, WebAppRepository>();
services.AddSingleton<IIisServerManagerFactory, IisServerManagerFactory>();
services.AddSingleton<IProcessRunner, ProcessRunner>();
services.AddSingleton<IWindowsImpersonator, WindowsImpersonator>();
services.AddSingleton<IWebAppManager, IisWebAppManager>();
services.AddSingleton<IWebAppManager, KestrelProcessManager>();
services.AddSingleton<IWebAppManager, WindowsServiceWebAppManager>();
services.AddSingleton<IWebAppManager, DockerWebAppManager>();
services.AddSingleton<IWebAppManagerFactory, WebAppManagerFactory>();
services.AddSingleton<ICacheResetStrategy, RecycleCacheReset>();
services.AddSingleton<ICacheResetStrategy, HttpCacheReset>();
services.AddSingleton<ICacheResetStrategy, FileCacheReset>();
services.AddSingleton<CacheResetCoordinator>();
services.AddSingleton<ConsoleRenderer>();
services.AddSingleton<CommandDispatcher>();
services.AddSingleton<ListCommand>();
services.AddSingleton<StatusCommand>();
services.AddSingleton<StartCommand>();
services.AddSingleton<StopCommand>();
services.AddSingleton<RestartCommand>();
services.AddSingleton<ClearCacheCommand>();
return services;
}
}