tgstation-server
The /tg/station 13 server suite
ProviderFactory.cs
Go to the documentation of this file.
1 using Microsoft.Extensions.Logging;
2 using System;
3 using System.Collections.Generic;
4 using System.Globalization;
8 
9 namespace Tgstation.Server.Host.Components.Chat
10 {
13  {
18 
23 
27  readonly ILoggerFactory loggerFactory;
28 
35  public ProviderFactory(IApplication application, IAsyncDelayer asyncDelayer, ILoggerFactory loggerFactory)
36  {
37  this.loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
38  this.asyncDelayer = asyncDelayer ?? throw new ArgumentNullException(nameof(asyncDelayer));
39  this.application = application ?? throw new ArgumentNullException(nameof(application));
40  }
41 
43  public IProvider CreateProvider(Api.Models.Internal.ChatBot settings)
44  {
45  if (settings == null)
46  throw new ArgumentNullException(nameof(settings));
47  var builder = settings.ConnectionStringBuilder;
48  if (builder == null || !builder.Valid)
49  throw new InvalidOperationException("Invalid ChatConnectionStringBuilder!");
50  switch (settings.Provider)
51  {
52  case ChatProvider.Irc:
53  var ircBuilder = (IrcConnectionStringBuilder)builder;
54  return new IrcProvider(application, asyncDelayer, loggerFactory.CreateLogger<IrcProvider>(), ircBuilder.Address, ircBuilder.Port.Value, ircBuilder.Nickname, ircBuilder.Password, ircBuilder.PasswordType, ircBuilder.UseSsl.Value);
55  case ChatProvider.Discord:
56  var discordBuilder = (DiscordConnectionStringBuilder)builder;
57  return new DiscordProvider(loggerFactory.CreateLogger<DiscordProvider>(), discordBuilder.BotToken);
58  default:
59  throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, "Invalid ChatProvider: {0}", settings.Provider));
60  }
61  }
62  }
63 }
readonly IApplication application
The IApplication for the ProviderFactory
Configures the ASP.NET Core web application
Definition: IApplication.cs:8
ChatConnectionStringBuilder for ChatProvider.Discord
readonly IAsyncDelayer asyncDelayer
The IAsyncDelayer for the ProviderFactory
For interacting with a chat service
Definition: IProvider.cs:11
readonly ILoggerFactory loggerFactory
The ILoggerFactory for the ProviderFactory
ProviderFactory(IApplication application, IAsyncDelayer asyncDelayer, ILoggerFactory loggerFactory)
Construct a ProviderFactory
ChatConnectionStringBuilder for ChatProvider.Irc
ChatProvider
Represents a chat service provider
Definition: ChatProvider.cs:6
IProvider CreateProvider(Api.Models.Internal.ChatBot settings)