Use native middleware

This commit is contained in:
Shadowghost
2026-05-04 21:57:11 +02:00
parent 4be3f5f1f9
commit 5cfb379aa6
6 changed files with 54 additions and 278 deletions

View File

@@ -1,6 +1,5 @@
using System;
using System.Buffers;
using System.Collections.Generic;
using System.Globalization;
using System.IO.Pipelines;
using System.Net;
@@ -9,7 +8,6 @@ using System.Text;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
using Emby.Server.Implementations.Localization;
using Jellyfin.Extensions.Json;
using MediaBrowser.Controller.Net;
using MediaBrowser.Controller.Net.WebSocketMessages;
@@ -72,12 +70,6 @@ namespace Emby.Server.Implementations.HttpServer
/// <inheritdoc />
public IPAddress? RemoteEndPoint { get; }
/// <summary>
/// Gets or initializes the culture fallback chain captured from the
/// <c>Accept-Language</c> header of the upgrade request.
/// </summary>
public IReadOnlyList<string>? RequestCultureFallback { get; init; }
/// <summary>
/// Gets or initializes the UI culture name captured from the upgrade request.
/// </summary>
@@ -98,22 +90,18 @@ namespace Emby.Server.Implementations.HttpServer
/// <inheritdoc />
public void ApplyRequestCulture()
{
if (RequestCultureFallback is not null)
if (string.IsNullOrEmpty(RequestUICulture))
{
LocalizationManager.RequestCultureFallback = RequestCultureFallback;
return;
}
if (!string.IsNullOrEmpty(RequestUICulture))
try
{
try
{
CultureInfo.CurrentUICulture = CultureInfo.GetCultureInfo(RequestUICulture);
}
catch (CultureNotFoundException)
{
// Jellyfin culture codes (e.g. "es_419") aren't always valid .NET cultures —
// skip setting CurrentUICulture; RequestCultureFallback above carries the chain.
}
CultureInfo.CurrentUICulture = CultureInfo.GetCultureInfo(RequestUICulture);
}
catch (CultureNotFoundException)
{
// Codes that aren't valid .NET cultures are ignored.
}
}

View File

@@ -8,7 +8,6 @@ using System.Globalization;
using System.Linq;
using System.Net.WebSockets;
using System.Threading.Tasks;
using Emby.Server.Implementations.Localization;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Net;
using Microsoft.AspNetCore.Http;
@@ -50,7 +49,7 @@ namespace Emby.Server.Implementations.HttpServer
WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync().ConfigureAwait(false);
// Capture the culture context set by AcceptLanguageMiddleware so it can be
// Capture the culture set by RequestLocalizationMiddleware so it can be
// restored both when processing incoming messages and when periodic
// listeners produce server-initiated payloads on background tasks.
var connection = new WebSocketConnection(
@@ -59,7 +58,6 @@ namespace Emby.Server.Implementations.HttpServer
authorizationInfo,
context.GetNormalizedRemoteIP())
{
RequestCultureFallback = LocalizationManager.RequestCultureFallback,
RequestUICulture = CultureInfo.CurrentUICulture.Name
};
connection.OnReceive = result =>