3
3
4
4
using System ;
5
5
using System . IO ;
6
+ using System . Text ;
6
7
using System . Threading ;
7
8
using System . Threading . Tasks ;
8
9
using Microsoft . OpenApi . Interfaces ;
@@ -41,7 +42,7 @@ public OpenApiStreamReader(OpenApiReaderSettings settings = null)
41
42
/// <returns>Instance of newly created OpenApiDocument.</returns>
42
43
public OpenApiDocument Read ( Stream input , out OpenApiDiagnostic diagnostic )
43
44
{
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 ) ;
45
46
return new OpenApiTextReaderReader ( _settings ) . Read ( reader , out diagnostic ) ;
46
47
}
47
48
@@ -54,6 +55,7 @@ public OpenApiDocument Read(Stream input, out OpenApiDiagnostic diagnostic)
54
55
public async Task < ReadResult > ReadAsync ( Stream input , CancellationToken cancellationToken = default )
55
56
{
56
57
MemoryStream bufferedStream ;
58
+ int bufferSize = 4096 ;
57
59
if ( input is MemoryStream stream )
58
60
{
59
61
bufferedStream = stream ;
@@ -63,11 +65,12 @@ public async Task<ReadResult> ReadAsync(Stream input, CancellationToken cancella
63
65
// Buffer stream so that OpenApiTextReaderReader can process it synchronously
64
66
// YamlDocument doesn't support async reading.
65
67
bufferedStream = new ( ) ;
66
- await input . CopyToAsync ( bufferedStream , 81920 , cancellationToken ) ;
68
+ bufferSize = 81920 ;
69
+ await input . CopyToAsync ( bufferedStream , bufferSize , cancellationToken ) ;
67
70
bufferedStream . Position = 0 ;
68
71
}
69
72
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 ) ;
71
74
return await new OpenApiTextReaderReader ( _settings ) . ReadAsync ( reader , cancellationToken ) ;
72
75
}
73
76
@@ -80,7 +83,7 @@ public async Task<ReadResult> ReadAsync(Stream input, CancellationToken cancella
80
83
/// <returns>Instance of newly created OpenApiDocument</returns>
81
84
public T ReadFragment < T > ( Stream input , OpenApiSpecVersion version , out OpenApiDiagnostic diagnostic ) where T : IOpenApiReferenceable
82
85
{
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 ) ;
84
87
return new OpenApiTextReaderReader ( _settings ) . ReadFragment < T > ( reader , version , out diagnostic ) ;
85
88
}
86
89
}
0 commit comments