diff --git a/src/Microsoft.OpenApi.Hidi/OpenApiService.cs b/src/Microsoft.OpenApi.Hidi/OpenApiService.cs index 60bba4aef..58b0a7733 100644 --- a/src/Microsoft.OpenApi.Hidi/OpenApiService.cs +++ b/src/Microsoft.OpenApi.Hidi/OpenApiService.cs @@ -98,7 +98,7 @@ CancellationToken cancellationToken if (!string.IsNullOrEmpty(csdlFilter)) { XslCompiledTransform transform = GetFilterTransform(); - stream = ApplyFilter(csdl, csdlFilter, transform); + stream = csdl.StartsWith("http") ? ApplyFilter(stream, csdlFilter, transform) : ApplyFilter(csdl, csdlFilter, transform); stream.Position = 0; } @@ -235,10 +235,9 @@ private static XslCompiledTransform GetFilterTransform() return transform; } - private static Stream ApplyFilter(string csdl, string entitySetOrSingleton, XslCompiledTransform transform) + private static Stream ApplyFilterForStreamReader(StreamReader inputReader, string entitySetOrSingleton, XslCompiledTransform transform) { Stream stream; - StreamReader inputReader = new(csdl); XmlReader inputXmlReader = XmlReader.Create(inputReader); MemoryStream filteredStream = new(); StreamWriter writer = new(filteredStream); @@ -246,9 +245,22 @@ private static Stream ApplyFilter(string csdl, string entitySetOrSingleton, XslC args.AddParam("entitySetOrSingleton", "", entitySetOrSingleton); transform.Transform(inputXmlReader, args, writer); stream = filteredStream; + return stream; } + private static Stream ApplyFilter(string csdl, string entitySetOrSingleton, XslCompiledTransform transform) + { + StreamReader inputReader = new(csdl); + return ApplyFilterForStreamReader(inputReader, entitySetOrSingleton, transform); + } + + private static Stream ApplyFilter(Stream csdlStream, string entitySetOrSingleton, XslCompiledTransform transform) + { + StreamReader inputReader = new(csdlStream); + return ApplyFilterForStreamReader(inputReader, entitySetOrSingleton, transform); + } + /// /// Implementation of the validate command ///