| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | using System;using System.Net.Mime;using System.Threading.Tasks;using MediaBrowser.Controller;using MediaBrowser.Model.Globalization;using Microsoft.AspNetCore.Http;namespace Jellyfin.Api.Middleware;/// <summary>/// Shows a custom message during server startup./// </summary>public class ServerStartupMessageMiddleware{    private readonly RequestDelegate _next;    /// <summary>    /// Initializes a new instance of the <see cref="ServerStartupMessageMiddleware"/> class.    /// </summary>    /// <param name="next">The next delegate in the pipeline.</param>    public ServerStartupMessageMiddleware(RequestDelegate next)    {        _next = next;    }    /// <summary>    /// Executes the middleware action.    /// </summary>    /// <param name="httpContext">The current HTTP context.</param>    /// <param name="serverApplicationHost">The server application host.</param>    /// <param name="localizationManager">The localization manager.</param>    /// <returns>The async task.</returns>    public async Task Invoke(        HttpContext httpContext,        IServerApplicationHost serverApplicationHost,        ILocalizationManager localizationManager)    {        if (serverApplicationHost.CoreStartupHasCompleted            || httpContext.Request.Path.Equals("/system/ping", StringComparison.OrdinalIgnoreCase))        {            await _next(httpContext).ConfigureAwait(false);            return;        }        var message = localizationManager.GetLocalizedString("StartupEmbyServerIsLoading");        httpContext.Response.StatusCode = StatusCodes.Status503ServiceUnavailable;        httpContext.Response.ContentType = MediaTypeNames.Text.Html;        await httpContext.Response.WriteAsync(message, httpContext.RequestAborted).ConfigureAwait(false);    }}
 |