diff --git a/OliverBooth/RouteCultureProvider.cs b/OliverBooth/RouteCultureProvider.cs deleted file mode 100644 index 2629111..0000000 --- a/OliverBooth/RouteCultureProvider.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System.Globalization; -using System.Text.RegularExpressions; -using Microsoft.AspNetCore.Localization; - -namespace OliverBooth; - -internal sealed partial class RouteCultureProvider : IRequestCultureProvider -{ - private static readonly Regex CultureRegex = GetCultureRegex(); - private readonly CultureInfo _defaultCulture; - private readonly CultureInfo _defaultUiCulture; - - public RouteCultureProvider(CultureInfo requestCulture) : this(new RequestCulture(requestCulture)) - { - } - - public RouteCultureProvider(RequestCulture requestCulture) - { - _defaultCulture = requestCulture.Culture; - _defaultUiCulture = requestCulture.UICulture; - } - - public Task DetermineProviderCultureResult(HttpContext httpContext) - { - PathString url = httpContext.Request.Path; - - string defaultCulture = _defaultCulture.TwoLetterISOLanguageName; - string defaultUiCulture = _defaultUiCulture.TwoLetterISOLanguageName; - - if (url.ToString().Length <= 1) - { - return Task.FromResult(new ProviderCultureResult(defaultCulture, defaultUiCulture))!; - } - - string[]? parts = httpContext.Request.Path.Value?.Split('/'); - string requestCulture = parts?[1] ?? string.Empty; - - bool isMatch = CultureRegex.IsMatch(requestCulture); - string culture = isMatch ? requestCulture : defaultCulture; - string uiCulture = isMatch ? requestCulture : defaultUiCulture; - - return Task.FromResult(new ProviderCultureResult(culture, uiCulture))!; - } - - [GeneratedRegex("^[a-z]{2}(-[A-Z]{2})*$")] - private static partial Regex GetCultureRegex(); -}