diff --git a/SW.Bitween.Api/Resources/Adapters/Metadata.cs b/SW.Bitween.Api/Resources/Adapters/Metadata.cs index 984441f9..cfebb597 100644 --- a/SW.Bitween.Api/Resources/Adapters/Metadata.cs +++ b/SW.Bitween.Api/Resources/Adapters/Metadata.cs @@ -1,3 +1,4 @@ +using System; using System.Linq; using System.Threading.Tasks; using SW.PrimitiveTypes; @@ -5,25 +6,33 @@ namespace SW.Bitween.Resources.Adapters; [HandlerName("Metadata")] -public class Metadata : IGetHandler +public class Metadata : IGetHandler { private readonly ServerlessOptions _serverlessOptions; private readonly ICloudFilesService _cloudFilesService; + private readonly NativeAdapterDiscoveryService _nativeAdapterDiscovery; public Metadata( ServerlessOptions serverlessOptions, - ICloudFilesService cloudFilesService + ICloudFilesService cloudFilesService, + NativeAdapterDiscoveryService nativeAdapterDiscovery ) { _serverlessOptions = serverlessOptions; _cloudFilesService = cloudFilesService; + _nativeAdapterDiscovery = nativeAdapterDiscovery; } public async Task Handle(string key) { + var decodedKey = Uri.UnescapeDataString(key); + + if (decodedKey.StartsWith(NativeAdapterDiscoveryService.NativePrefix, StringComparison.OrdinalIgnoreCase)) + return new { }; + var cloudFilesList = await _cloudFilesService.GetMetadataAsync( - $"{_serverlessOptions.AdapterRemotePath}/{key}" + $"{_serverlessOptions.AdapterRemotePath}/{decodedKey}" ); return cloudFilesList;