From 531e281349b7ca4511eb48d86a40a510ffaada32 Mon Sep 17 00:00:00 2001 From: cKey <35512826+colinin@users.noreply.github.com> Date: Sat, 18 Dec 2021 09:50:38 +0800 Subject: [PATCH 1/3] fix(wrapper): fixed invalid wrapper IsEnabled option --- .../Wrapper/Filters/AbpWrapResultFilter.cs | 3 +++ .../Mvc/Wrapper/WrapResultChecker.cs | 6 +++++- .../Wraping/EmptyActionResultWrapper.cs | 20 +++++++++++++++---- .../Mvc/Results/WrapResultController.cs | 7 +++++++ .../Mvc/Results/WrapResultController_Tests.cs | 10 ++++++++++ .../Abp/AspNetCore/AbpAspNetCoreTestBase.cs | 12 +++++------ 6 files changed, 47 insertions(+), 11 deletions(-) diff --git a/aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/Filters/AbpWrapResultFilter.cs b/aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/Filters/AbpWrapResultFilter.cs index 34ce47c55..85ef9c8b6 100644 --- a/aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/Filters/AbpWrapResultFilter.cs +++ b/aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/Filters/AbpWrapResultFilter.cs @@ -1,6 +1,7 @@ using LINGYUN.Abp.AspNetCore.Mvc.Wrapper.Wraping; using LINGYUN.Abp.Wrapper; using Microsoft.AspNetCore.Mvc.Filters; +using Microsoft.Extensions.Options; using System.Threading.Tasks; using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.DependencyInjection; @@ -28,9 +29,11 @@ namespace LINGYUN.Abp.AspNetCore.Mvc.Wrapper.Filters protected virtual Task HandleAndWrapResult(ResultExecutingContext context) { + var options = context.GetRequiredService>().Value; var actionResultWrapperFactory = context.GetRequiredService(); actionResultWrapperFactory.CreateFor(context).Wrap(context); context.HttpContext.Response.Headers.Add(AbpHttpWrapConsts.AbpWrapResult, "true"); + context.HttpContext.Response.StatusCode = (int)options.HttpStatusCode; return Task.CompletedTask; } diff --git a/aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/WrapResultChecker.cs b/aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/WrapResultChecker.cs index c3131bcf8..09d0276a3 100644 --- a/aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/WrapResultChecker.cs +++ b/aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/WrapResultChecker.cs @@ -6,7 +6,6 @@ using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.Extensions.Options; using System; using System.Linq; -using System.Reflection; using Volo.Abp.DependencyInjection; using Volo.Abp.Threading; @@ -44,6 +43,11 @@ namespace LINGYUN.Abp.AspNetCore.Mvc.Wrapper protected virtual bool CheckForBase(FilterContext context) { + if (!Options.IsEnabled) + { + return false; + } + if (context.HttpContext.Request.Headers.ContainsKey(AbpHttpWrapConsts.AbpDontWrapResult)) { return false; diff --git a/aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/Wraping/EmptyActionResultWrapper.cs b/aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/Wraping/EmptyActionResultWrapper.cs index 98fe39b6c..773f0ab61 100644 --- a/aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/Wraping/EmptyActionResultWrapper.cs +++ b/aspnet-core/modules/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN/Abp/AspNetCore/Mvc/Wrapper/Wraping/EmptyActionResultWrapper.cs @@ -11,16 +11,28 @@ namespace LINGYUN.Abp.AspNetCore.Mvc.Wrapper.Wraping public void Wrap(FilterContext context) { var options = context.GetRequiredService>().Value; - var code = options.CodeWithEmptyResult(context.HttpContext.RequestServices); - var message = options.MessageWithEmptyResult(context.HttpContext.RequestServices); switch (context) { case ResultExecutingContext resultExecutingContext: - resultExecutingContext.Result = new ObjectResult(new WrapResult(code, message)); + if (options.ErrorWithEmptyResult) + { + var code = options.CodeWithEmptyResult(context.HttpContext.RequestServices); + var message = options.MessageWithEmptyResult(context.HttpContext.RequestServices); + resultExecutingContext.Result = new ObjectResult(new WrapResult(code, message)); + return; + } + resultExecutingContext.Result = new ObjectResult(new WrapResult(options.CodeWithSuccess, result: null)); return; case PageHandlerExecutedContext pageHandlerExecutedContext: - pageHandlerExecutedContext.Result = new ObjectResult(new WrapResult(code, message)); + if (options.ErrorWithEmptyResult) + { + var code = options.CodeWithEmptyResult(context.HttpContext.RequestServices); + var message = options.MessageWithEmptyResult(context.HttpContext.RequestServices); + pageHandlerExecutedContext.Result = new ObjectResult(new WrapResult(code, message)); + return; + } + pageHandlerExecutedContext.Result = new ObjectResult(new WrapResult(options.CodeWithSuccess, result: null)); return; } } diff --git a/aspnet-core/tests/LINGYUN.Abp.AspNetCore.Mvc.Tests/LINGYUN/Abp/AspNetCore/Mvc/Results/WrapResultController.cs b/aspnet-core/tests/LINGYUN.Abp.AspNetCore.Mvc.Tests/LINGYUN/Abp/AspNetCore/Mvc/Results/WrapResultController.cs index 5412fb329..eb95db9ba 100644 --- a/aspnet-core/tests/LINGYUN.Abp.AspNetCore.Mvc.Tests/LINGYUN/Abp/AspNetCore/Mvc/Results/WrapResultController.cs +++ b/aspnet-core/tests/LINGYUN.Abp.AspNetCore.Mvc.Tests/LINGYUN/Abp/AspNetCore/Mvc/Results/WrapResultController.cs @@ -90,5 +90,12 @@ namespace LINGYUN.Abp.AspNetCore.Mvc.Results { throw new HasDbException(); } + + [HttpPut] + [Route("not-wrap-204")] + public Task NotWrapWith204() + { + return Task.CompletedTask; + } } } diff --git a/aspnet-core/tests/LINGYUN.Abp.AspNetCore.Mvc.Tests/LINGYUN/Abp/AspNetCore/Mvc/Results/WrapResultController_Tests.cs b/aspnet-core/tests/LINGYUN.Abp.AspNetCore.Mvc.Tests/LINGYUN/Abp/AspNetCore/Mvc/Results/WrapResultController_Tests.cs index 8cf666678..5ad1ec38d 100644 --- a/aspnet-core/tests/LINGYUN.Abp.AspNetCore.Mvc.Tests/LINGYUN/Abp/AspNetCore/Mvc/Results/WrapResultController_Tests.cs +++ b/aspnet-core/tests/LINGYUN.Abp.AspNetCore.Mvc.Tests/LINGYUN/Abp/AspNetCore/Mvc/Results/WrapResultController_Tests.cs @@ -1,5 +1,6 @@ using LINGYUN.Abp.Wrapper; using Shouldly; +using System.Net.Http; using System.Threading.Tasks; using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; using Volo.Abp.Http; @@ -115,5 +116,14 @@ namespace LINGYUN.Abp.AspNetCore.Mvc.Results result.ShouldNotBeNull(); result.Name.ShouldBe("Not Wrap"); } + + [Fact] + public async Task Should_Return_Not_Wrap_Result_For_Response_204() + { + var result = await GetResponseAsObjectAsync("/api/wrap-result-test/not-wrap-204", System.Net.HttpStatusCode.OK, method: HttpMethod.Put); + result.ShouldNotBeNull(); + result.Code.ShouldBe("0"); + result.Result.ShouldBeNull(); + } } } diff --git a/aspnet-core/tests/LINGYUN.Abp.AspNetCore.Tests/LINGYUN/Abp/AspNetCore/AbpAspNetCoreTestBase.cs b/aspnet-core/tests/LINGYUN.Abp.AspNetCore.Tests/LINGYUN/Abp/AspNetCore/AbpAspNetCoreTestBase.cs index e80508136..de60e70c2 100644 --- a/aspnet-core/tests/LINGYUN.Abp.AspNetCore.Tests/LINGYUN/Abp/AspNetCore/AbpAspNetCoreTestBase.cs +++ b/aspnet-core/tests/LINGYUN.Abp.AspNetCore.Tests/LINGYUN/Abp/AspNetCore/AbpAspNetCoreTestBase.cs @@ -26,23 +26,23 @@ namespace LINGYUN.Abp.AspNetCore RequestHeaders = new Dictionary(); } - protected virtual async Task GetResponseAsObjectAsync(string url, HttpStatusCode expectedStatusCode = HttpStatusCode.OK, bool xmlHttpRequest = false) + protected virtual async Task GetResponseAsObjectAsync(string url, HttpStatusCode expectedStatusCode = HttpStatusCode.OK, bool xmlHttpRequest = false, HttpMethod method = null) { - var strResponse = await GetResponseAsStringAsync(url, expectedStatusCode, xmlHttpRequest); + var strResponse = await GetResponseAsStringAsync(url, expectedStatusCode, xmlHttpRequest, method); return JsonSerializer.Deserialize(strResponse, new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }); } - protected virtual async Task GetResponseAsStringAsync(string url, HttpStatusCode expectedStatusCode = HttpStatusCode.OK, bool xmlHttpRequest = false) + protected virtual async Task GetResponseAsStringAsync(string url, HttpStatusCode expectedStatusCode = HttpStatusCode.OK, bool xmlHttpRequest = false, HttpMethod method = null) { - using (var response = await GetResponseAsync(url, expectedStatusCode, xmlHttpRequest)) + using (var response = await GetResponseAsync(url, expectedStatusCode, xmlHttpRequest, method)) { return await response.Content.ReadAsStringAsync(); } } - protected virtual async Task GetResponseAsync(string url, HttpStatusCode expectedStatusCode = HttpStatusCode.OK, bool xmlHttpRequest = false) + protected virtual async Task GetResponseAsync(string url, HttpStatusCode expectedStatusCode = HttpStatusCode.OK, bool xmlHttpRequest = false, HttpMethod method = null) { - using (var requestMessage = new HttpRequestMessage(HttpMethod.Get, url)) + using (var requestMessage = new HttpRequestMessage(method ?? HttpMethod.Get, url)) { requestMessage.Headers.Add("Accept-Language", CultureInfo.CurrentUICulture.Name); if (xmlHttpRequest) From 40eee18179fa863f50b8d8b1ee71bcfd08627b8a Mon Sep 17 00:00:00 2001 From: cKey <35512826+colinin@users.noreply.github.com> Date: Sat, 18 Dec 2021 09:55:02 +0800 Subject: [PATCH 2/3] fix(localization): fix localization exceptions caused by abp configuration endpoints --- apps/vue/src/hooks/abp/useLocalization.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/vue/src/hooks/abp/useLocalization.ts b/apps/vue/src/hooks/abp/useLocalization.ts index 16311c6dd..788f11c33 100644 --- a/apps/vue/src/hooks/abp/useLocalization.ts +++ b/apps/vue/src/hooks/abp/useLocalization.ts @@ -20,7 +20,8 @@ export function useLocalization(resourceName: string, ...mergeResources: string[ function L(key: string, ...args: any[]) { if (!key) return ''; - if (!getResource.value[key]) return key; + if (!getResource.value) return key; + if (!Reflect.has(getResource.value, key)) return key; return format(getResource.value[key], args ?? []); } From fd203d4cf9992044064665a5c409e3464c808790 Mon Sep 17 00:00:00 2001 From: cKey <35512826+colinin@users.noreply.github.com> Date: Sat, 18 Dec 2021 09:57:01 +0800 Subject: [PATCH 3/3] fix(oss): fixed invalid oss upload file parameters --- apps/vue/src/api/oss-management/oss.ts | 4 ++-- apps/vue/src/api/oss-management/public.ts | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/vue/src/api/oss-management/oss.ts b/apps/vue/src/api/oss-management/oss.ts index ad6c7d643..60fa3709e 100644 --- a/apps/vue/src/api/oss-management/oss.ts +++ b/apps/vue/src/api/oss-management/oss.ts @@ -103,8 +103,8 @@ export const uploadObject = (params: UploadFileParams, event: any) => { currentChunkSize: currentChunksSize, totalChunks: totalChunks, totalSize: totalSize, - bucket: params.bucket, - path: params.path, + bucket: params.data?.bucket, + path: params.data?.path, fileName: fileName, }; return defAbpHttp diff --git a/apps/vue/src/api/oss-management/public.ts b/apps/vue/src/api/oss-management/public.ts index 5d3b0e3e3..939e0f487 100644 --- a/apps/vue/src/api/oss-management/public.ts +++ b/apps/vue/src/api/oss-management/public.ts @@ -20,9 +20,10 @@ export const upload = (file: Blob, path: string, name: string) => { defHttp .uploadFile( { - url: format(Api.Upload, { path: path, name: name }), + url: Api.Upload, }, { + data: { path: path, object: name }, file: file, }, )