From a627e1d754eb5ac31470b7b642f8da5951b75aa5 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 9 Jul 2021 14:35:44 +0800 Subject: [PATCH] Make the implementation simpler. --- ...NetCoreMvcQueryStringCultureReplacement.cs | 36 +++++++++---------- ...ltQueryStringCultureReplacementProvider.cs | 33 ----------------- .../IQueryStringCultureReplacementProvider.cs | 9 ----- .../QueryStringCultureReplacementOptions.cs | 15 -------- 4 files changed, 17 insertions(+), 76 deletions(-) delete mode 100644 framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/DefaultQueryStringCultureReplacementProvider.cs delete mode 100644 framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/IQueryStringCultureReplacementProvider.cs delete mode 100644 framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/QueryStringCultureReplacementOptions.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpAspNetCoreMvcQueryStringCultureReplacement.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpAspNetCoreMvcQueryStringCultureReplacement.cs index 376a3c8446..900d1c5de7 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpAspNetCoreMvcQueryStringCultureReplacement.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpAspNetCoreMvcQueryStringCultureReplacement.cs @@ -1,35 +1,33 @@ using System; +using System.Text.RegularExpressions; using System.Threading.Tasks; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Options; using Volo.Abp.DependencyInjection; namespace Volo.Abp.AspNetCore.Mvc.Localization { public class AbpAspNetCoreMvcQueryStringCultureReplacement : IQueryStringCultureReplacement, ITransientDependency { - protected AbpQueryStringCultureReplacementOptions Options { get; } - protected IServiceProvider ServiceProvider { get; } - - public AbpAspNetCoreMvcQueryStringCultureReplacement( - IOptions queryStringCultureReplacementOptions, - IServiceProvider serviceProvider) - { - ServiceProvider = serviceProvider; - Options = queryStringCultureReplacementOptions.Value; - } - - public virtual async Task ReplaceAsync(QueryStringCultureReplacementContext context) + public virtual Task ReplaceAsync(QueryStringCultureReplacementContext context) { - using (var scope = ServiceProvider.CreateScope()) + if (!string.IsNullOrWhiteSpace(context.ReturnUrl)) { - foreach (var provider in Options.QueryStringCultureReplacementProviders) + if (context.ReturnUrl.Contains("culture=", StringComparison.OrdinalIgnoreCase) && + context.ReturnUrl.Contains("ui-Culture=", StringComparison.OrdinalIgnoreCase)) { - // ReSharper disable once PossibleNullReferenceException - await (scope.ServiceProvider.GetRequiredService(provider) as IQueryStringCultureReplacementProvider) - .ReplaceAsync(context); + context.ReturnUrl = Regex.Replace( + context.ReturnUrl, + "culture=[A-Za-z-]+?&", + $"culture={context.RequestCulture.Culture}&", + RegexOptions.Compiled | RegexOptions.IgnoreCase); + + context.ReturnUrl = Regex.Replace( + context.ReturnUrl, "ui-culture=[A-Za-z-]+?$", + $"ui-culture={context.RequestCulture.UICulture}", + RegexOptions.Compiled | RegexOptions.IgnoreCase); } } + + return Task.CompletedTask; } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/DefaultQueryStringCultureReplacementProvider.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/DefaultQueryStringCultureReplacementProvider.cs deleted file mode 100644 index 04c7ed4554..0000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/DefaultQueryStringCultureReplacementProvider.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Text.RegularExpressions; -using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; - -namespace Volo.Abp.AspNetCore.Mvc.Localization -{ - public class DefaultQueryStringCultureReplacementProvider : IQueryStringCultureReplacementProvider, ITransientDependency - { - public Task ReplaceAsync(QueryStringCultureReplacementContext context) - { - if (!string.IsNullOrWhiteSpace(context.ReturnUrl)) - { - if (context.ReturnUrl.Contains("culture=", StringComparison.OrdinalIgnoreCase) && - context.ReturnUrl.Contains("ui-Culture=", StringComparison.OrdinalIgnoreCase)) - { - context.ReturnUrl = Regex.Replace( - context.ReturnUrl, - "culture=[A-Za-z-]+?&", - $"culture={context.RequestCulture.Culture}&", - RegexOptions.Compiled | RegexOptions.IgnoreCase); - - context.ReturnUrl = Regex.Replace( - context.ReturnUrl, "ui-culture=[A-Za-z-]+?$", - $"ui-culture={context.RequestCulture.UICulture}", - RegexOptions.Compiled | RegexOptions.IgnoreCase); - } - } - - return Task.CompletedTask; - } - } -} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/IQueryStringCultureReplacementProvider.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/IQueryStringCultureReplacementProvider.cs deleted file mode 100644 index 4f4ca7df68..0000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/IQueryStringCultureReplacementProvider.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Threading.Tasks; - -namespace Volo.Abp.AspNetCore.Mvc.Localization -{ - public interface IQueryStringCultureReplacementProvider - { - Task ReplaceAsync(QueryStringCultureReplacementContext context); - } -} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/QueryStringCultureReplacementOptions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/QueryStringCultureReplacementOptions.cs deleted file mode 100644 index 2b3d105ee7..0000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/QueryStringCultureReplacementOptions.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Volo.Abp.Collections; - -namespace Volo.Abp.AspNetCore.Mvc.Localization -{ - public class AbpQueryStringCultureReplacementOptions - { - public ITypeList QueryStringCultureReplacementProviders { get; } - - public AbpQueryStringCultureReplacementOptions() - { - QueryStringCultureReplacementProviders = new TypeList(); - QueryStringCultureReplacementProviders.Add(); - } - } -}