mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-06-23 15:30:56 -04:00
ATV requested endpoint mock
This commit is contained in:
parent
dc029d549c
commit
41c27d4e7e
@ -46,7 +46,7 @@ namespace Jellyfin.Server
|
|||||||
|
|
||||||
private static readonly SerilogLoggerFactory _loggerFactory = new SerilogLoggerFactory();
|
private static readonly SerilogLoggerFactory _loggerFactory = new SerilogLoggerFactory();
|
||||||
private static SetupServer? _setupServer = new();
|
private static SetupServer? _setupServer = new();
|
||||||
|
private static CoreAppHost? _appHost;
|
||||||
private static IHost? _jfHost = null;
|
private static IHost? _jfHost = null;
|
||||||
private static long _startTimestamp;
|
private static long _startTimestamp;
|
||||||
private static ILogger _logger = NullLogger.Instance;
|
private static ILogger _logger = NullLogger.Instance;
|
||||||
@ -74,7 +74,7 @@ namespace Jellyfin.Server
|
|||||||
{
|
{
|
||||||
_startTimestamp = Stopwatch.GetTimestamp();
|
_startTimestamp = Stopwatch.GetTimestamp();
|
||||||
ServerApplicationPaths appPaths = StartupHelpers.CreateApplicationPaths(options);
|
ServerApplicationPaths appPaths = StartupHelpers.CreateApplicationPaths(options);
|
||||||
await _setupServer!.RunAsync(static () => _jfHost?.Services?.GetService<INetworkManager>(), appPaths).ConfigureAwait(false);
|
await _setupServer!.RunAsync(static () => _jfHost?.Services?.GetService<INetworkManager>(), appPaths, static () => _appHost).ConfigureAwait(false);
|
||||||
|
|
||||||
// $JELLYFIN_LOG_DIR needs to be set for the logger configuration manager
|
// $JELLYFIN_LOG_DIR needs to be set for the logger configuration manager
|
||||||
Environment.SetEnvironmentVariable("JELLYFIN_LOG_DIR", appPaths.LogDirectoryPath);
|
Environment.SetEnvironmentVariable("JELLYFIN_LOG_DIR", appPaths.LogDirectoryPath);
|
||||||
@ -130,18 +130,19 @@ namespace Jellyfin.Server
|
|||||||
{
|
{
|
||||||
_startTimestamp = Stopwatch.GetTimestamp();
|
_startTimestamp = Stopwatch.GetTimestamp();
|
||||||
_setupServer = new SetupServer();
|
_setupServer = new SetupServer();
|
||||||
await _setupServer.RunAsync(static () => _jfHost?.Services?.GetService<INetworkManager>(), appPaths).ConfigureAwait(false);
|
await _setupServer.RunAsync(static () => _jfHost?.Services?.GetService<INetworkManager>(), appPaths, static () => _appHost).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
} while (_restartOnShutdown);
|
} while (_restartOnShutdown);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async Task StartServer(IServerApplicationPaths appPaths, StartupOptions options, IConfiguration startupConfig)
|
private static async Task StartServer(IServerApplicationPaths appPaths, StartupOptions options, IConfiguration startupConfig)
|
||||||
{
|
{
|
||||||
using var appHost = new CoreAppHost(
|
using CoreAppHost appHost = new CoreAppHost(
|
||||||
appPaths,
|
appPaths,
|
||||||
_loggerFactory,
|
_loggerFactory,
|
||||||
options,
|
options,
|
||||||
startupConfig);
|
startupConfig);
|
||||||
|
_appHost = appHost;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_jfHost = Host.CreateDefaultBuilder()
|
_jfHost = Host.CreateDefaultBuilder()
|
||||||
@ -215,6 +216,7 @@ namespace Jellyfin.Server
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_appHost = null;
|
||||||
_jfHost?.Dispose();
|
_jfHost?.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,8 @@ using System.Threading.Tasks;
|
|||||||
using Jellyfin.Networking.Manager;
|
using Jellyfin.Networking.Manager;
|
||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Net;
|
||||||
|
using MediaBrowser.Controller;
|
||||||
|
using MediaBrowser.Model.System;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Diagnostics.HealthChecks;
|
using Microsoft.AspNetCore.Diagnostics.HealthChecks;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
@ -31,8 +33,12 @@ public sealed class SetupServer : IDisposable
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="networkManagerFactory">The networkmanager.</param>
|
/// <param name="networkManagerFactory">The networkmanager.</param>
|
||||||
/// <param name="applicationPaths">The application paths.</param>
|
/// <param name="applicationPaths">The application paths.</param>
|
||||||
|
/// <param name="serverApplicationHost">The servers application host.</param>
|
||||||
/// <returns>A Task.</returns>
|
/// <returns>A Task.</returns>
|
||||||
public async Task RunAsync(Func<INetworkManager?> networkManagerFactory, IApplicationPaths applicationPaths)
|
public async Task RunAsync(
|
||||||
|
Func<INetworkManager?> networkManagerFactory,
|
||||||
|
IApplicationPaths applicationPaths,
|
||||||
|
Func<IServerApplicationHost?> serverApplicationHost)
|
||||||
{
|
{
|
||||||
ThrowIfDisposed();
|
ThrowIfDisposed();
|
||||||
_startupServer = Host.CreateDefaultBuilder()
|
_startupServer = Host.CreateDefaultBuilder()
|
||||||
@ -69,6 +75,41 @@ public sealed class SetupServer : IDisposable
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
app.Map("/System/Info/Public", systemRoute =>
|
||||||
|
{
|
||||||
|
systemRoute.Run(async context =>
|
||||||
|
{
|
||||||
|
var jfApplicationHost = serverApplicationHost();
|
||||||
|
|
||||||
|
var retryCounter = 0;
|
||||||
|
while (jfApplicationHost is null && retryCounter < 5)
|
||||||
|
{
|
||||||
|
await Task.Delay(500).ConfigureAwait(false);
|
||||||
|
jfApplicationHost = serverApplicationHost();
|
||||||
|
retryCounter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (jfApplicationHost is null)
|
||||||
|
{
|
||||||
|
context.Response.StatusCode = (int)HttpStatusCode.ServiceUnavailable;
|
||||||
|
context.Response.Headers.RetryAfter = new Microsoft.Extensions.Primitives.StringValues("60");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var sysInfo = new PublicSystemInfo
|
||||||
|
{
|
||||||
|
Version = jfApplicationHost.ApplicationVersionString,
|
||||||
|
ProductName = jfApplicationHost.Name,
|
||||||
|
Id = jfApplicationHost.SystemId,
|
||||||
|
ServerName = jfApplicationHost.FriendlyName,
|
||||||
|
LocalAddress = jfApplicationHost.GetSmartApiUrl(context.Request),
|
||||||
|
StartupWizardCompleted = false
|
||||||
|
};
|
||||||
|
|
||||||
|
await context.Response.WriteAsJsonAsync(sysInfo).ConfigureAwait(false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
app.Run((context) =>
|
app.Run((context) =>
|
||||||
{
|
{
|
||||||
context.Response.StatusCode = (int)HttpStatusCode.ServiceUnavailable;
|
context.Response.StatusCode = (int)HttpStatusCode.ServiceUnavailable;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user