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:
@@ -1,9 +1,12 @@
|
|||||||
using AngleSharp.Common;
|
using AngleSharp.Common;
|
||||||
using DigitalData.Core.API;
|
using DigitalData.Core.API;
|
||||||
using EnvelopeGenerator.Application.Resources;
|
using EnvelopeGenerator.Application.Resources;
|
||||||
|
using EnvelopeGenerator.Web.Extensions;
|
||||||
using EnvelopeGenerator.Web.Models;
|
using EnvelopeGenerator.Web.Models;
|
||||||
|
using Microsoft.AspNetCore.Localization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Extensions.Localization;
|
using Microsoft.Extensions.Localization;
|
||||||
|
using System.Globalization;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers.Test
|
namespace EnvelopeGenerator.Web.Controllers.Test
|
||||||
{
|
{
|
||||||
@@ -28,5 +31,14 @@ namespace EnvelopeGenerator.Web.Controllers.Test
|
|||||||
|
|
||||||
[HttpGet("culture")]
|
[HttpGet("culture")]
|
||||||
public IActionResult GetCultures(string? lang = null) => lang is null ? Ok(_cultures) : Ok(_cultures[lang]);
|
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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,7 +61,18 @@ public static class WebExtensions
|
|||||||
|
|
||||||
#region Cookie
|
#region Cookie
|
||||||
public static string? GetCulture(this IRequestCookieCollection cookies)
|
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)
|
public static void SetCulture(this IResponseCookies cookies, string culture)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user