Some checks failed
Deploy ASP.NET MVC to OCI / build-and-deploy (push) Has been cancelled
37 lines
1.3 KiB
C#
37 lines
1.3 KiB
C#
using Convert_It_Online.Services;
|
|
using Microsoft.AspNetCore.Routing;
|
|
using System.Globalization;
|
|
|
|
namespace Convert_It_Online.Routing
|
|
{
|
|
public class LocalizedControllerRouteConstraint : IRouteConstraint
|
|
{
|
|
private readonly IUrlTranslationService _urlTranslationService;
|
|
|
|
public LocalizedControllerRouteConstraint(IUrlTranslationService urlTranslationService)
|
|
{
|
|
_urlTranslationService = urlTranslationService;
|
|
}
|
|
|
|
public bool Match(HttpContext? httpContext, IRouter? route, string routeKey,
|
|
RouteValueDictionary values, RouteDirection routeDirection)
|
|
{
|
|
if (values.TryGetValue("translatedController", out var value) && value is string controllerName)
|
|
{
|
|
if (values.TryGetValue("culture", out var cultureValue) && cultureValue is string cultureName)
|
|
{
|
|
var culture = new CultureInfo(cultureName);
|
|
var originalController = _urlTranslationService.GetOriginalController(controllerName, culture);
|
|
|
|
if (originalController != null)
|
|
{
|
|
values["controller"] = originalController;
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|
|
} |