private static ServiceProvider ConfigureServiceCollection(ServiceCollection serviceCollection) { return(serviceCollection // Settings .Configure <Hosts>(GetSettingsFile("appsettings.json", "HostsConfig")) .Configure <Settings>(GetSettingsFile("appsettings.json", "Settings")) .Configure <StreamAnnouncerSettings>(GetSettingsFile("appsettings.json", "StreamAnnouncerSettings")) // Services .AddSingleton <IStreamAnnouncer, StreamAnnouncer>() // Discord .AddSingleton <IDiscordBot, DiscordBot>() .AddSingleton <DiscordSocketClient>() // Serilog .AddSingleton((ILogger) new LoggerConfiguration() .WriteTo.Async(a => a.RollingFile("logs/enigma-{Date}.log", retainedFileCountLimit: 3)) .WriteTo.Console() .CreateLogger()) // Twitch Api .AddSingleton(provider => TwitchApiFactory.Create( provider.GetRequiredService <IOptions <Settings> >().Value.TwitchClientId, provider.GetRequiredService <IOptions <Settings> >().Value.TwitchAccessToken)) // Helpers .AddSingleton <ITwitchApiHelper, TwitchApiHelper>() // Logging .AddLogging(configure => configure.AddConsole()) .BuildServiceProvider()); }
public static IHostBuilder CreateHostBuilder(string[] args) { return(Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddHostedService <Worker>(); // Settings services.Configure <ConfigSettings>(GetSettingsFile("appsettings.json", "Settings")); // Discord services.AddSingleton <IDiscordBot, DiscordBot>(); services.AddSingleton <DiscordSocketClient>(); services.AddSingleton <CommandService>(); services.AddSingleton <CommandHandler>(); // Twitch Api services.AddSingleton(provider => TwitchApiFactory.Create( provider.GetRequiredService <IOptions <ConfigSettings> >().Value.TwitchClientId, provider.GetRequiredService <IOptions <ConfigSettings> >().Value.TwitchClientSecret)); services.AddSingleton <ITwitchApiHelper, TwitchApiHelper>(); // Database services.AddSingleton <IDataStore>(new DataStore("Database.json", keyProperty: "id", reloadBeforeGetCollection: true)); // Repositories services.AddSingleton(typeof(IDataStoreRepository <>), typeof(DataStoreRepository <>)); // Modules services .AddSingleton <IStreamAnnouncer, StreamAnnouncer.Service.Modules.StreamAnnouncer.StreamAnnouncer >(); })); }