tgstation-server 6.19.0
The /tg/station 13 server suite
Loading...
Searching...
No Matches
ProviderFactory.cs
Go to the documentation of this file.
1using System;
2using System.Globalization;
3
4using Microsoft.Extensions.Logging;
5using Microsoft.Extensions.Options;
6
12
14{
17 {
22
27
32
36 readonly ILoggerFactory loggerFactory;
37
41 readonly IOptionsMonitor<GeneralConfiguration> generalConfigurationOptions;
42
46 readonly IOptionsMonitor<FileLoggingConfiguration> loggingConfigurationOptions;
47
61 ILoggerFactory loggerFactory,
62 IOptionsMonitor<GeneralConfiguration> generalConfigurationOptions,
63 IOptionsMonitor<FileLoggingConfiguration> loggingConfigurationOptions)
64 {
65 this.jobManager = jobManager ?? throw new ArgumentNullException(nameof(jobManager));
66 this.loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
67 this.asyncDelayer = asyncDelayer ?? throw new ArgumentNullException(nameof(asyncDelayer));
68 this.assemblyInformationProvider = assemblyInformationProvider ?? throw new ArgumentNullException(nameof(assemblyInformationProvider));
69 this.generalConfigurationOptions = generalConfigurationOptions ?? throw new ArgumentNullException(nameof(generalConfigurationOptions));
70 this.loggingConfigurationOptions = loggingConfigurationOptions ?? throw new ArgumentNullException(nameof(loggingConfigurationOptions));
71 }
72
74 public IProvider CreateProvider(Models.ChatBot settings)
75 {
76 ArgumentNullException.ThrowIfNull(settings);
77 return settings.Provider switch
78 {
79 ChatProvider.Irc => new IrcProvider(
82 loggerFactory.CreateLogger<IrcProvider>(),
83 settings,
86 ChatProvider.Discord => new DiscordProvider(
89 loggerFactory.CreateLogger<DiscordProvider>(),
92 settings),
93 _ => throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, "Invalid ChatProvider: {0}", settings.Provider)),
94 };
95 }
96 }
97}
readonly IAsyncDelayer asyncDelayer
The IAsyncDelayer for the ProviderFactory.
ProviderFactory(IJobManager jobManager, IAssemblyInformationProvider assemblyInformationProvider, IAsyncDelayer asyncDelayer, ILoggerFactory loggerFactory, IOptionsMonitor< GeneralConfiguration > generalConfigurationOptions, IOptionsMonitor< FileLoggingConfiguration > loggingConfigurationOptions)
Initializes a new instance of the ProviderFactory class.
readonly IOptionsMonitor< FileLoggingConfiguration > loggingConfigurationOptions
The FileLoggingConfiguration IOptionsMonitor<TOptions> for the ProviderFactory.
IProvider CreateProvider(Models.ChatBot settings)
Create a IProvider.A new IProvider.
readonly IOptionsMonitor< GeneralConfiguration > generalConfigurationOptions
The GeneralConfiguration IOptionsMonitor<TOptions> for the ProviderFactory.
readonly ILoggerFactory loggerFactory
The ILoggerFactory for the ProviderFactory.
readonly IJobManager jobManager
The IJobManager for the ProviderFactory.
readonly IAssemblyInformationProvider assemblyInformationProvider
The IAssemblyInformationProvider for the ProviderFactory.
Manages the runtime of Jobs.