mirror of https://github.com/jellyfin/jellyfin.git
Expose some methods in Program.cs so they can be used to initialize the application for integration tests
This commit is contained in:
parent
3cf2fce983
commit
51b610b999
|
@ -161,23 +161,7 @@ namespace Jellyfin.Server
|
|||
|
||||
ApplicationHost.LogEnvironmentInfo(_logger, appPaths);
|
||||
|
||||
// Make sure we have all the code pages we can get
|
||||
// Ref: https://docs.microsoft.com/en-us/dotnet/api/system.text.codepagesencodingprovider.instance?view=netcore-3.0#remarks
|
||||
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
|
||||
|
||||
// Increase the max http request limit
|
||||
// The default connection limit is 10 for ASP.NET hosted applications and 2 for all others.
|
||||
ServicePointManager.DefaultConnectionLimit = Math.Max(96, ServicePointManager.DefaultConnectionLimit);
|
||||
|
||||
// Disable the "Expect: 100-Continue" header by default
|
||||
// http://stackoverflow.com/questions/566437/http-post-returns-the-error-417-expectation-failed-c
|
||||
ServicePointManager.Expect100Continue = false;
|
||||
|
||||
Batteries_V2.Init();
|
||||
if (raw.sqlite3_enable_shared_cache(1) != raw.SQLITE_OK)
|
||||
{
|
||||
_logger.LogWarning("Failed to enable shared cache for SQLite");
|
||||
}
|
||||
PerformStaticInitialization();
|
||||
|
||||
var appHost = new CoreAppHost(
|
||||
appPaths,
|
||||
|
@ -206,7 +190,7 @@ namespace Jellyfin.Server
|
|||
ServiceCollection serviceCollection = new ServiceCollection();
|
||||
await appHost.InitAsync(serviceCollection, startupConfig).ConfigureAwait(false);
|
||||
|
||||
var webHost = CreateWebHostBuilder(appHost, serviceCollection, options, startupConfig, appPaths).Build();
|
||||
var webHost = new WebHostBuilder().ConfigureWebHostBuilder(appHost, serviceCollection, options, startupConfig, appPaths).Build();
|
||||
|
||||
// Re-use the web host service provider in the app host since ASP.NET doesn't allow a custom service collection.
|
||||
appHost.ServiceProvider = webHost.Services;
|
||||
|
@ -252,14 +236,49 @@ namespace Jellyfin.Server
|
|||
}
|
||||
}
|
||||
|
||||
private static IWebHostBuilder CreateWebHostBuilder(
|
||||
/// <summary>
|
||||
/// Call static initialization methods for the application.
|
||||
/// </summary>
|
||||
public static void PerformStaticInitialization()
|
||||
{
|
||||
// Make sure we have all the code pages we can get
|
||||
// Ref: https://docs.microsoft.com/en-us/dotnet/api/system.text.codepagesencodingprovider.instance?view=netcore-3.0#remarks
|
||||
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
|
||||
|
||||
// Increase the max http request limit
|
||||
// The default connection limit is 10 for ASP.NET hosted applications and 2 for all others.
|
||||
ServicePointManager.DefaultConnectionLimit = Math.Max(96, ServicePointManager.DefaultConnectionLimit);
|
||||
|
||||
// Disable the "Expect: 100-Continue" header by default
|
||||
// http://stackoverflow.com/questions/566437/http-post-returns-the-error-417-expectation-failed-c
|
||||
ServicePointManager.Expect100Continue = false;
|
||||
|
||||
Batteries_V2.Init();
|
||||
if (raw.sqlite3_enable_shared_cache(1) != raw.SQLITE_OK)
|
||||
{
|
||||
_logger.LogWarning("Failed to enable shared cache for SQLite");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Configure the web host builder.
|
||||
/// </summary>
|
||||
/// <param name="builder">The builder to configure.</param>
|
||||
/// <param name="appHost">The application host.</param>
|
||||
/// <param name="serviceCollection">The application service collection.</param>
|
||||
/// <param name="commandLineOpts">The command line options passed to the application.</param>
|
||||
/// <param name="startupConfig">The application configuration.</param>
|
||||
/// <param name="appPaths">The application paths.</param>
|
||||
/// <returns>The configured web host builder.</returns>
|
||||
public static IWebHostBuilder ConfigureWebHostBuilder(
|
||||
this IWebHostBuilder builder,
|
||||
ApplicationHost appHost,
|
||||
IServiceCollection serviceCollection,
|
||||
StartupOptions commandLineOpts,
|
||||
IConfiguration startupConfig,
|
||||
IApplicationPaths appPaths)
|
||||
{
|
||||
return new WebHostBuilder()
|
||||
return builder
|
||||
.UseKestrel((builderContext, options) =>
|
||||
{
|
||||
var addresses = appHost.ServerConfigurationManager
|
||||
|
@ -492,7 +511,9 @@ namespace Jellyfin.Server
|
|||
/// Initialize the logging configuration file using the bundled resource file as a default if it doesn't exist
|
||||
/// already.
|
||||
/// </summary>
|
||||
private static async Task InitLoggingConfigFile(IApplicationPaths appPaths)
|
||||
/// <param name="appPaths">The application paths.</param>
|
||||
/// <returns>A task representing the creation of the configuration file, or a completed task if the file already exists.</returns>
|
||||
public static async Task InitLoggingConfigFile(IApplicationPaths appPaths)
|
||||
{
|
||||
// Do nothing if the config file already exists
|
||||
string configPath = Path.Combine(appPaths.ConfigurationDirectoryPath, LoggingConfigFileDefault);
|
||||
|
@ -512,7 +533,13 @@ namespace Jellyfin.Server
|
|||
await resource.CopyToAsync(dst).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
private static IConfiguration CreateAppConfiguration(StartupOptions commandLineOpts, IApplicationPaths appPaths)
|
||||
/// <summary>
|
||||
/// Create the application configuration.
|
||||
/// </summary>
|
||||
/// <param name="commandLineOpts">The command line options passed to the program.</param>
|
||||
/// <param name="appPaths">The application paths.</param>
|
||||
/// <returns>The application configuration.</returns>
|
||||
public static IConfiguration CreateAppConfiguration(StartupOptions commandLineOpts, IApplicationPaths appPaths)
|
||||
{
|
||||
return new ConfigurationBuilder()
|
||||
.ConfigureAppConfiguration(commandLineOpts, appPaths)
|
||||
|
|
Loading…
Reference in New Issue