-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathBootstrap.Configuration.cs
66 lines (60 loc) · 3.12 KB
/
Bootstrap.Configuration.cs
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
62
63
64
65
66
using FFXIVVenues.Veni.AI.Davinci;
using FFXIVVenues.Veni.AI.Luis;
using FFXIVVenues.Veni.Api;
using FFXIVVenues.Veni.Authorisation.Configuration;
using FFXIVVenues.Veni.Infrastructure;
using FFXIVVenues.Veni.Infrastructure.Persistence;
using FFXIVVenues.Veni.Infrastructure.Presence;
using FFXIVVenues.Veni.VenueControl.VenueAuthoring;
using FFXIVVenues.Veni.VenueRendering;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace FFXIVVenues.Veni;
internal static partial class Bootstrap
{
internal static Configurations LoadConfiguration(ServiceCollection serviceCollection)
{
var config = new ConfigurationBuilder()
.AddJsonFile("config.json", optional: true)
.AddUserSecrets<DiscordHandler>(optional: true)
.AddEnvironmentVariables("FFXIV_VENUES_")
.AddEnvironmentVariables("FFXIV_VENUES_VENI_")
.Build();
var allConfig = new Configurations
{
DiscordToken = config.GetValue<string>("DiscordBotToken"),
LoggingConfig = config.GetSection("Logging").Get<LoggingConfiguration>() ?? new(),
LuisConfig = config.GetSection("Clu").Get<CluConfiguration>() ?? new(),
ApiConfig = config.GetSection("Api").Get<ApiConfiguration>() ?? new(),
PersistenceConfig = config.GetSection("Persistence").Get<PersistenceConfiguration>() ?? new(),
UiConfig = config.GetSection("Ui").Get<UiConfiguration>() ?? new(),
NotificationConfig = config.GetSection("Notifications").Get<NotificationsConfiguration>() ?? new(),
AuthorisationConfig = config.GetSection("Authorisation").Get<AuthorisationConfiguration>() ?? new(),
DavinciConfig = config.GetSection("Davinci3").Get<DavinciConfiguration>() ?? new(),
PresenceConfig = config.GetSection("Presence").Get<PresenceConfiguration>() ?? new()
};
serviceCollection.AddSingleton<IConfiguration>(config);
serviceCollection.AddSingleton(allConfig.LuisConfig);
serviceCollection.AddSingleton(allConfig.AuthorisationConfig);
serviceCollection.AddSingleton(allConfig.NotificationConfig);
serviceCollection.AddSingleton(allConfig.DavinciConfig);
serviceCollection.AddSingleton(allConfig.ApiConfig);
serviceCollection.AddSingleton(allConfig.PersistenceConfig);
serviceCollection.AddSingleton(allConfig.UiConfig);
serviceCollection.AddSingleton(allConfig.PresenceConfig);
return allConfig;
}
}
internal class Configurations
{
public string DiscordToken { get; set; }
public LoggingConfiguration LoggingConfig { get; set; }
public CluConfiguration LuisConfig { get; set; }
public ApiConfiguration ApiConfig { get; set; }
public PersistenceConfiguration PersistenceConfig { get; set; }
public UiConfiguration UiConfig { get; set; }
public NotificationsConfiguration NotificationConfig { get; set; }
public AuthorisationConfiguration AuthorisationConfig { get; set; }
public DavinciConfiguration DavinciConfig { get; set; }
public PresenceConfiguration PresenceConfig { get; set; }
}