22
22
using Microsoft . OpenApi . Services ;
23
23
using Microsoft . OpenApi . Validations ;
24
24
using Microsoft . OpenApi . Writers ;
25
+ using static Microsoft . OpenApi . Hidi . OpenApiSpecVersionHelper ;
25
26
using System . Threading ;
26
27
27
28
namespace Microsoft . OpenApi . Hidi
@@ -32,7 +33,7 @@ public static async Task<int> ProcessOpenApiDocument(
32
33
string openapi ,
33
34
string csdl ,
34
35
FileInfo output ,
35
- OpenApiSpecVersion ? version ,
36
+ string ? version ,
36
37
OpenApiFormat ? format ,
37
38
LogLevel loglevel ,
38
39
bool inline ,
@@ -63,14 +64,15 @@ CancellationToken cancellationToken
63
64
Stream stream ;
64
65
OpenApiDocument document ;
65
66
OpenApiFormat openApiFormat ;
67
+ OpenApiSpecVersion openApiVersion ;
66
68
var stopwatch = new Stopwatch ( ) ;
67
69
68
70
if ( ! string . IsNullOrEmpty ( csdl ) )
69
71
{
70
72
// Default to yaml and OpenApiVersion 3 during csdl to OpenApi conversion
71
73
openApiFormat = format ?? GetOpenApiFormat ( csdl , logger ) ;
72
- version ??= OpenApiSpecVersion . OpenApi3_0 ;
73
-
74
+ openApiVersion = version == null ? OpenApiSpecVersion . OpenApi3_0 : TryParseOpenApiSpecVersion ( version ) ;
75
+
74
76
stream = await GetStream ( csdl , logger , cancellationToken ) ;
75
77
document = await ConvertCsdlToOpenApi ( stream ) ;
76
78
}
@@ -81,12 +83,12 @@ CancellationToken cancellationToken
81
83
// Parsing OpenAPI file
82
84
stopwatch . Start ( ) ;
83
85
logger . LogTrace ( "Parsing OpenApi file" ) ;
84
- var result = new OpenApiStreamReader ( new OpenApiReaderSettings
86
+ var result = await new OpenApiStreamReader ( new OpenApiReaderSettings
85
87
{
86
88
ReferenceResolution = resolveexternal ? ReferenceResolutionSetting . ResolveAllReferences : ReferenceResolutionSetting . ResolveLocalReferences ,
87
89
RuleSet = ValidationRuleSet . GetDefaultRuleSet ( )
88
90
}
89
- ) . ReadAsync ( stream ) . GetAwaiter ( ) . GetResult ( ) ;
91
+ ) . ReadAsync ( stream ) ;
90
92
91
93
document = result . OpenApiDocument ;
92
94
stopwatch . Stop ( ) ;
@@ -111,7 +113,7 @@ CancellationToken cancellationToken
111
113
}
112
114
113
115
openApiFormat = format ?? GetOpenApiFormat ( openapi , logger ) ;
114
- version ??= result . OpenApiDiagnostic . SpecificationVersion ;
116
+ openApiVersion = version == null ? TryParseOpenApiSpecVersion ( version ) : result . OpenApiDiagnostic . SpecificationVersion ;
115
117
}
116
118
117
119
Func < string , OperationType ? , OpenApiOperation , bool > predicate ;
@@ -168,11 +170,10 @@ CancellationToken cancellationToken
168
170
logger . LogTrace ( "Serializing to OpenApi document using the provided spec version and writer" ) ;
169
171
170
172
stopwatch . Start ( ) ;
171
- document . Serialize ( writer , ( OpenApiSpecVersion ) version ) ;
173
+ document . Serialize ( writer , openApiVersion ) ;
172
174
stopwatch . Stop ( ) ;
173
175
174
176
logger . LogTrace ( $ "Finished serializing in { stopwatch . ElapsedMilliseconds } ms") ;
175
-
176
177
textWriter . Flush ( ) ;
177
178
178
179
return 0 ;
@@ -187,7 +188,7 @@ CancellationToken cancellationToken
187
188
return 1 ;
188
189
}
189
190
}
190
-
191
+
191
192
/// <summary>
192
193
/// Converts CSDL to OpenAPI
193
194
/// </summary>
0 commit comments