aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBond-009 <bond.009@outlook.com>2023-01-13 11:51:36 +0100
committerGitHub <noreply@github.com>2023-01-13 11:51:36 +0100
commit12786db0ccde25e9277556bc3d2885c57e9167ba (patch)
tree03c8c8f1b527c82cef66c23bed918bf94478a385
parent0571d3e403906167ce4204e63f8697f97e35d0bf (diff)
parent033ffa9a8899be7f28e72603cf5881c066b40cd5 (diff)
Merge pull request #9078 from barronpm/migrate-to-ihost
-rw-r--r--Jellyfin.Server/Jellyfin.Server.csproj2
-rw-r--r--Jellyfin.Server/Program.cs33
-rw-r--r--Jellyfin.Server/Startup.cs18
-rw-r--r--tests/Jellyfin.Server.Integration.Tests/JellyfinApplicationFactory.cs15
4 files changed, 30 insertions, 38 deletions
diff --git a/Jellyfin.Server/Jellyfin.Server.csproj b/Jellyfin.Server/Jellyfin.Server.csproj
index 195d7f3a9..b16c566d5 100644
--- a/Jellyfin.Server/Jellyfin.Server.csproj
+++ b/Jellyfin.Server/Jellyfin.Server.csproj
@@ -41,7 +41,7 @@
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="7.0.2" />
<PackageReference Include="prometheus-net" Version="7.0.0" />
<PackageReference Include="prometheus-net.AspNetCore" Version="7.0.0" />
- <PackageReference Include="Serilog.AspNetCore" Version="4.1.0" />
+ <PackageReference Include="Serilog.AspNetCore" Version="6.0.1" />
<PackageReference Include="Serilog.Enrichers.Thread" Version="3.1.0" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.4.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="1.5.0" />
diff --git a/Jellyfin.Server/Program.cs b/Jellyfin.Server/Program.cs
index 7052f4d2b..1506530f0 100644
--- a/Jellyfin.Server/Program.cs
+++ b/Jellyfin.Server/Program.cs
@@ -6,7 +6,6 @@ using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
-using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Text;
using System.Threading;
@@ -21,7 +20,6 @@ using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
@@ -186,20 +184,22 @@ namespace Jellyfin.Server
try
{
- var serviceCollection = new ServiceCollection();
- appHost.Init(serviceCollection);
+ var host = Host.CreateDefaultBuilder()
+ .ConfigureServices(services => appHost.Init(services))
+ .ConfigureWebHostDefaults(webHostBuilder => webHostBuilder.ConfigureWebHostBuilder(appHost, startupConfig, appPaths))
+ .ConfigureAppConfiguration(config => config.ConfigureAppConfiguration(options, appPaths, startupConfig))
+ .UseSerilog()
+ .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;
+ // Re-use the host service provider in the app host since ASP.NET doesn't allow a custom service collection.
+ appHost.ServiceProvider = host.Services;
await appHost.InitializeServices().ConfigureAwait(false);
Migrations.MigrationRunner.Run(appHost, _loggerFactory);
try
{
- await webHost.StartAsync(_tokenSource.Token).ConfigureAwait(false);
+ await host.StartAsync(_tokenSource.Token).ConfigureAwait(false);
if (!OperatingSystem.IsWindows() && startupConfig.UseUnixSocket())
{
@@ -284,16 +284,12 @@ namespace Jellyfin.Server
/// </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,
+ CoreAppHost appHost,
IConfiguration startupConfig,
IApplicationPaths appPaths)
{
@@ -349,14 +345,7 @@ namespace Jellyfin.Server
_logger.LogInformation("Kestrel listening to unix socket {SocketPath}", socketPath);
}
})
- .ConfigureAppConfiguration(config => config.ConfigureAppConfiguration(commandLineOpts, appPaths, startupConfig))
- .UseSerilog()
- .ConfigureServices(services =>
- {
- // Merge the external ServiceCollection into ASP.NET DI
- services.Add(serviceCollection);
- })
- .UseStartup<Startup>();
+ .UseStartup(_ => new Startup(appHost));
}
/// <summary>
diff --git a/Jellyfin.Server/Startup.cs b/Jellyfin.Server/Startup.cs
index 5d6a278c4..f89f81c76 100644
--- a/Jellyfin.Server/Startup.cs
+++ b/Jellyfin.Server/Startup.cs
@@ -35,20 +35,17 @@ namespace Jellyfin.Server
/// </summary>
public class Startup
{
- private readonly IServerConfigurationManager _serverConfigurationManager;
private readonly IServerApplicationHost _serverApplicationHost;
+ private readonly IServerConfigurationManager _serverConfigurationManager;
/// <summary>
/// Initializes a new instance of the <see cref="Startup" /> class.
/// </summary>
- /// <param name="serverConfigurationManager">The server configuration manager.</param>
- /// <param name="serverApplicationHost">The server application host.</param>
- public Startup(
- IServerConfigurationManager serverConfigurationManager,
- IServerApplicationHost serverApplicationHost)
+ /// <param name="appHost">The server application host.</param>
+ public Startup(CoreAppHost appHost)
{
- _serverConfigurationManager = serverConfigurationManager;
- _serverApplicationHost = serverApplicationHost;
+ _serverApplicationHost = appHost;
+ _serverConfigurationManager = appHost.ConfigurationManager;
}
/// <summary>
@@ -87,8 +84,7 @@ namespace Jellyfin.Server
RequestHeaderEncodingSelector = (_, _) => Encoding.UTF8
};
- services
- .AddHttpClient(NamedClient.Default, c =>
+ services.AddHttpClient(NamedClient.Default, c =>
{
c.DefaultRequestHeaders.UserAgent.Add(productHeader);
c.DefaultRequestHeaders.Accept.Add(acceptJsonHeader);
@@ -208,7 +204,7 @@ namespace Jellyfin.Server
endpoints.MapControllers();
if (_serverConfigurationManager.Configuration.EnableMetrics)
{
- endpoints.MapMetrics("/metrics");
+ endpoints.MapMetrics();
}
endpoints.MapHealthChecks("/health");
diff --git a/tests/Jellyfin.Server.Integration.Tests/JellyfinApplicationFactory.cs b/tests/Jellyfin.Server.Integration.Tests/JellyfinApplicationFactory.cs
index c38faeda1..1bfa5996d 100644
--- a/tests/Jellyfin.Server.Integration.Tests/JellyfinApplicationFactory.cs
+++ b/tests/Jellyfin.Server.Integration.Tests/JellyfinApplicationFactory.cs
@@ -8,6 +8,7 @@ using MediaBrowser.Common;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc.Testing;
using Microsoft.AspNetCore.TestHost;
+using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Serilog;
@@ -78,11 +79,17 @@ namespace Jellyfin.Server.Integration.Tests
commandLineOpts,
startupConfig);
_disposableComponents.Add(appHost);
- var serviceCollection = new ServiceCollection();
- appHost.Init(serviceCollection);
- // Configure the web host builder
- Program.ConfigureWebHostBuilder(builder, appHost, serviceCollection, commandLineOpts, startupConfig, appPaths);
+ builder.ConfigureServices(services => appHost.Init(services))
+ .ConfigureWebHostBuilder(appHost, startupConfig, appPaths)
+ .ConfigureAppConfiguration((context, builder) =>
+ {
+ builder
+ .SetBasePath(appPaths.ConfigurationDirectoryPath)
+ .AddInMemoryCollection(ConfigurationOptions.DefaultConfiguration)
+ .AddEnvironmentVariables("JELLYFIN_")
+ .AddInMemoryCollection(commandLineOpts.ConvertToConfig());
+ });
}
/// <inheritdoc/>