Add endpoints for culture detection and improve cookie parsing

Added two endpoints to TestLocalizerController for retrieving culture from Accept-Language and user cookies. Enhanced GetCulture extension to parse and return the actual culture string from cookies. Updated usings for new extension methods.
This commit is contained in:
2026-02-12 16:11:40 +01:00
parent 745e9c7bfe
commit ab57dd4cee
2 changed files with 24 additions and 1 deletions

View File

@@ -1,9 +1,12 @@
using AngleSharp.Common;
using DigitalData.Core.API;
using EnvelopeGenerator.Application.Resources;
using EnvelopeGenerator.Web.Extensions;
using EnvelopeGenerator.Web.Models;
using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Localization;
using System.Globalization;
namespace EnvelopeGenerator.Web.Controllers.Test
{
@@ -28,5 +31,14 @@ namespace EnvelopeGenerator.Web.Controllers.Test
[HttpGet("culture")]
public IActionResult GetCultures(string? lang = null) => lang is null ? Ok(_cultures) : Ok(_cultures[lang]);
[HttpGet("culture/accept-language")]
public IActionResult GetCultureByAcceptLanguage()
=> HttpContext.GetCultureByAcceptLanguage()?.Name is string culture
? Ok(culture)
: NotFound();
[HttpGet("culture/user")]
public IActionResult GetUserCulture() => Request.Cookies.GetCulture() is string cult ? Ok(cult) : NotFound();
}
}

View File

@@ -61,7 +61,18 @@ public static class WebExtensions
#region Cookie
public static string? GetCulture(this IRequestCookieCollection cookies)
=> cookies[CookieRequestCultureProvider.DefaultCookieName];
{
var cookieValue = cookies[CookieRequestCultureProvider.DefaultCookieName];
if (!string.IsNullOrEmpty(cookieValue))
{
var culture = CookieRequestCultureProvider.ParseCookieValue(cookieValue)?.Cultures.FirstOrDefault().Value;
if (!string.IsNullOrEmpty(culture))
return culture;
}
return null;
}
public static void SetCulture(this IResponseCookies cookies, string culture)
{