33
44using System ;
55using System . IO ;
6+ using System . Text ;
67using System . Threading ;
78using System . Threading . Tasks ;
89using Microsoft . OpenApi . Interfaces ;
@@ -41,7 +42,7 @@ public OpenApiStreamReader(OpenApiReaderSettings settings = null)
4142 /// <returns>Instance of newly created OpenApiDocument.</returns>
4243 public OpenApiDocument Read ( Stream input , out OpenApiDiagnostic diagnostic )
4344 {
44- using var reader = new StreamReader ( input , default , true , - 1 , _settings . LeaveStreamOpen ) ;
45+ using var reader = new StreamReader ( input , Encoding . UTF8 , true , 4096 , _settings . LeaveStreamOpen ) ;
4546 return new OpenApiTextReaderReader ( _settings ) . Read ( reader , out diagnostic ) ;
4647 }
4748
@@ -54,6 +55,7 @@ public OpenApiDocument Read(Stream input, out OpenApiDiagnostic diagnostic)
5455 public async Task < ReadResult > ReadAsync ( Stream input , CancellationToken cancellationToken = default )
5556 {
5657 MemoryStream bufferedStream ;
58+ int bufferSize = 4096 ;
5759 if ( input is MemoryStream stream )
5860 {
5961 bufferedStream = stream ;
@@ -63,11 +65,12 @@ public async Task<ReadResult> ReadAsync(Stream input, CancellationToken cancella
6365 // Buffer stream so that OpenApiTextReaderReader can process it synchronously
6466 // YamlDocument doesn't support async reading.
6567 bufferedStream = new ( ) ;
66- await input . CopyToAsync ( bufferedStream , 81920 , cancellationToken ) ;
68+ bufferSize = 81920 ;
69+ await input . CopyToAsync ( bufferedStream , bufferSize , cancellationToken ) ;
6770 bufferedStream . Position = 0 ;
6871 }
6972
70- using var reader = new StreamReader ( bufferedStream , default , true , - 1 , _settings . LeaveStreamOpen ) ;
73+ using var reader = new StreamReader ( bufferedStream , Encoding . UTF8 , true , bufferSize , _settings . LeaveStreamOpen ) ;
7174 return await new OpenApiTextReaderReader ( _settings ) . ReadAsync ( reader , cancellationToken ) ;
7275 }
7376
@@ -80,7 +83,7 @@ public async Task<ReadResult> ReadAsync(Stream input, CancellationToken cancella
8083 /// <returns>Instance of newly created OpenApiDocument</returns>
8184 public T ReadFragment < T > ( Stream input , OpenApiSpecVersion version , out OpenApiDiagnostic diagnostic ) where T : IOpenApiReferenceable
8285 {
83- using var reader = new StreamReader ( input , default , true , - 1 , _settings . LeaveStreamOpen ) ;
86+ using var reader = new StreamReader ( input , Encoding . UTF8 , true , 4096 , _settings . LeaveStreamOpen ) ;
8487 return new OpenApiTextReaderReader ( _settings ) . ReadFragment < T > ( reader , version , out diagnostic ) ;
8588 }
8689 }
0 commit comments