From efebe80c90193985d189ab9cbc53c68226a3d3f6 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 4 Apr 2025 16:09:33 +0800 Subject: [PATCH] Fix the way to get paths for `GetDirectoryContentPath` and `GetProxyFileInfoPath`. --- .../ClientProxyApiDescriptionFinder.cs | 43 ++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyApiDescriptionFinder.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyApiDescriptionFinder.cs index b8d2b763df..1734469c04 100644 --- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyApiDescriptionFinder.cs +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyApiDescriptionFinder.cs @@ -8,6 +8,7 @@ using Volo.Abp.DependencyInjection; using Volo.Abp.Http.Modeling; using Volo.Abp.Json; using Volo.Abp.VirtualFileSystem; +using Volo.Abp.VirtualFileSystem.Embedded; namespace Volo.Abp.Http.Client.ClientProxying; @@ -29,17 +30,19 @@ public class ClientProxyApiDescriptionFinder : IClientProxyApiDescriptionFinder, Initialize(); } - public ActionApiDescriptionModel? FindAction(string methodName) + public virtual ActionApiDescriptionModel? FindAction(string methodName) { - return ActionApiDescriptionModels.ContainsKey(methodName) ? ActionApiDescriptionModels[methodName] : null; + return ActionApiDescriptionModels.TryGetValue(methodName, out var model) + ? model + : null; } - public ApplicationApiDescriptionModel GetApiDescription() + public virtual ApplicationApiDescriptionModel GetApiDescription() { return ApplicationApiDescriptionModel; } - private void Initialize() + protected virtual void Initialize() { ApplicationApiDescriptionModel = GetApplicationApiDescriptionModel(); var controllers = ApplicationApiDescriptionModel.Modules.Select(x => x.Value).SelectMany(x => x.Controllers.Values).ToList(); @@ -60,7 +63,7 @@ public class ClientProxyApiDescriptionFinder : IClientProxyApiDescriptionFinder, } } - private ApplicationApiDescriptionModel GetApplicationApiDescriptionModel() + protected virtual ApplicationApiDescriptionModel GetApplicationApiDescriptionModel() { var applicationApiDescription = ApplicationApiDescriptionModel.Create(); var fileInfoList = new List(); @@ -87,7 +90,7 @@ public class ClientProxyApiDescriptionFinder : IClientProxyApiDescriptionFinder, return applicationApiDescription; } - private void GetGenerateProxyFileInfos(List fileInfoList, string path = "") + protected virtual void GetGenerateProxyFileInfos(List fileInfoList, string path = "") { foreach (var directoryContent in VirtualFileProvider.GetDirectoryContents(path)) { @@ -104,24 +107,24 @@ public class ClientProxyApiDescriptionFinder : IClientProxyApiDescriptionFinder, } } } - - private string GetDirectoryContentPath(string rootPath, IFileInfo fileInfo) + + protected virtual string GetDirectoryContentPath(string rootPath, IFileInfo fileInfo) { - if (fileInfo is PhysicalDirectoryInfo physicalDirectoryInfo) + return fileInfo switch { - return rootPath + physicalDirectoryInfo.Name.EnsureStartsWith('/'); - } - - return fileInfo.PhysicalPath!; + PhysicalDirectoryInfo physicalDirectoryInfo => rootPath + physicalDirectoryInfo.Name.EnsureStartsWith('/'), + VirtualDirectoryFileInfo => fileInfo.PhysicalPath!, + _ => rootPath + fileInfo.Name.EnsureStartsWith('/') + }; } - - private string GetProxyFileInfoPath(string rootPath, IFileInfo fileInfo) + + protected virtual string GetProxyFileInfoPath(string rootPath, IFileInfo fileInfo) { - if (fileInfo is PhysicalFileInfo physicalFileInfo) + return fileInfo switch { - return rootPath + physicalFileInfo.Name.EnsureStartsWith('/'); - } - - return fileInfo.GetVirtualOrPhysicalPathOrNull()!; + EmbeddedResourceFileInfo embeddedFileInfo => embeddedFileInfo.VirtualPath, + InMemoryFileInfo inMemoryFileInfo => inMemoryFileInfo.DynamicPath, + _ => rootPath + fileInfo.Name.EnsureStartsWith('/') + }; } }