@@ -169,7 +169,7 @@ public static ReadResult Parse(string input,
169
169
string format = null ,
170
170
OpenApiReaderSettings settings = null )
171
171
{
172
- format ??= OpenApiConstants . Json ;
172
+ format ??= InspectInputFormat ( input ) ;
173
173
settings ??= new OpenApiReaderSettings ( ) ;
174
174
175
175
// Copy string into MemoryStream
@@ -193,15 +193,14 @@ public static T Parse<T>(string input,
193
193
string format = null ,
194
194
OpenApiReaderSettings settings = null ) where T : IOpenApiElement
195
195
{
196
- format ??= OpenApiConstants . Json ;
196
+ format ??= InspectInputFormat ( input ) ;
197
197
settings ??= new OpenApiReaderSettings ( ) ;
198
198
var stream = new MemoryStream ( Encoding . UTF8 . GetBytes ( input ) ) ;
199
199
return Load < T > ( stream , version , format , out diagnostic , settings ) ;
200
200
}
201
201
202
202
private static async Task < ReadResult > InternalLoadAsync ( Stream input , string format , OpenApiReaderSettings settings , CancellationToken cancellationToken = default )
203
203
{
204
- Utils . CheckArgumentNull ( format , nameof ( format ) ) ;
205
204
var reader = OpenApiReaderRegistry . GetReader ( format ) ;
206
205
var readResult = await reader . ReadAsync ( input , settings , cancellationToken ) ;
207
206
@@ -289,5 +288,10 @@ SecurityException or
289
288
}
290
289
return ( null , null ) ;
291
290
}
291
+
292
+ private static string InspectInputFormat ( string input )
293
+ {
294
+ return input . StartsWith ( "{" , StringComparison . OrdinalIgnoreCase ) || input . StartsWith ( "[" , StringComparison . OrdinalIgnoreCase ) ? OpenApiConstants . Json : OpenApiConstants . Yaml ;
295
+ }
292
296
}
293
297
}
0 commit comments