Browse Source

Merge pull request #22550 from abpframework/ClientProxyApiDescriptionFinder

Fix the way to get paths for `GetDirectoryContentPath` and `GetProxyFileInfoPath`.
pull/22552/head
Halil İbrahim Kalkan 1 year ago
committed by GitHub
parent
commit
ced0bf7528
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 43
      framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyApiDescriptionFinder.cs

43
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.Http.Modeling;
using Volo.Abp.Json; using Volo.Abp.Json;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
using Volo.Abp.VirtualFileSystem.Embedded;
namespace Volo.Abp.Http.Client.ClientProxying; namespace Volo.Abp.Http.Client.ClientProxying;
@ -29,17 +30,19 @@ public class ClientProxyApiDescriptionFinder : IClientProxyApiDescriptionFinder,
Initialize(); 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; return ApplicationApiDescriptionModel;
} }
private void Initialize() protected virtual void Initialize()
{ {
ApplicationApiDescriptionModel = GetApplicationApiDescriptionModel(); ApplicationApiDescriptionModel = GetApplicationApiDescriptionModel();
var controllers = ApplicationApiDescriptionModel.Modules.Select(x => x.Value).SelectMany(x => x.Controllers.Values).ToList(); 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 applicationApiDescription = ApplicationApiDescriptionModel.Create();
var fileInfoList = new List<IFileInfo>(); var fileInfoList = new List<IFileInfo>();
@ -87,7 +90,7 @@ public class ClientProxyApiDescriptionFinder : IClientProxyApiDescriptionFinder,
return applicationApiDescription; return applicationApiDescription;
} }
private void GetGenerateProxyFileInfos(List<IFileInfo> fileInfoList, string path = "") protected virtual void GetGenerateProxyFileInfos(List<IFileInfo> fileInfoList, string path = "")
{ {
foreach (var directoryContent in VirtualFileProvider.GetDirectoryContents(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('/'); PhysicalDirectoryInfo physicalDirectoryInfo => rootPath + physicalDirectoryInfo.Name.EnsureStartsWith('/'),
} VirtualDirectoryFileInfo => fileInfo.PhysicalPath!,
_ => rootPath + fileInfo.Name.EnsureStartsWith('/')
return fileInfo.PhysicalPath!; };
} }
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('/'); EmbeddedResourceFileInfo embeddedFileInfo => embeddedFileInfo.VirtualPath,
} InMemoryFileInfo inMemoryFileInfo => inMemoryFileInfo.DynamicPath,
_ => rootPath + fileInfo.Name.EnsureStartsWith('/')
return fileInfo.GetVirtualOrPhysicalPathOrNull()!; };
} }
} }

Loading…
Cancel
Save