@@ -59,131 +59,131 @@ CancellationToken cancellationToken
59
59
{
60
60
throw new IOException ( $ "The file { output } already exists. Please input a new file path.") ;
61
61
}
62
- }
63
- catch ( Exception ex )
64
- {
65
- #if DEBUG
66
- logger . LogCritical ( ex , ex . Message ) ;
67
- #else
68
- logger . LogCritical ( ex . Message ) ;
69
- #endif
70
- return ;
71
- }
72
62
73
- Stream stream ;
74
- OpenApiDocument document ;
75
- OpenApiFormat openApiFormat ;
76
- var stopwatch = new Stopwatch ( ) ;
77
-
78
- if ( ! string . IsNullOrEmpty ( csdl ) )
79
- {
80
- // Default to yaml and OpenApiVersion 3 during csdl to OpenApi conversion
81
- openApiFormat = format ?? GetOpenApiFormat ( csdl , logger ) ;
82
- version ??= OpenApiSpecVersion . OpenApi3_0 ;
83
-
84
- stream = await GetStream ( csdl , logger , cancellationToken ) ;
85
- document = await ConvertCsdlToOpenApi ( stream ) ;
86
- }
87
- else
88
- {
89
- stream = await GetStream ( openapi , logger , cancellationToken ) ;
63
+ Stream stream ;
64
+ OpenApiDocument document ;
65
+ OpenApiFormat openApiFormat ;
66
+ var stopwatch = new Stopwatch ( ) ;
90
67
91
- // Parsing OpenAPI file
92
- stopwatch . Start ( ) ;
93
- logger . LogTrace ( "Parsing OpenApi file" ) ;
94
- var result = new OpenApiStreamReader ( new OpenApiReaderSettings
68
+ if ( ! string . IsNullOrEmpty ( csdl ) )
95
69
{
96
- ReferenceResolution = resolveexternal ? ReferenceResolutionSetting . ResolveAllReferences : ReferenceResolutionSetting . ResolveLocalReferences ,
97
- RuleSet = ValidationRuleSet . GetDefaultRuleSet ( )
70
+ // Default to yaml and OpenApiVersion 3 during csdl to OpenApi conversion
71
+ openApiFormat = format ?? GetOpenApiFormat ( csdl , logger ) ;
72
+ version ??= OpenApiSpecVersion . OpenApi3_0 ;
73
+
74
+ stream = await GetStream ( csdl , logger , cancellationToken ) ;
75
+ document = await ConvertCsdlToOpenApi ( stream ) ;
98
76
}
99
- ) . ReadAsync ( stream ) . GetAwaiter ( ) . GetResult ( ) ;
77
+ else
78
+ {
79
+ stream = await GetStream ( openapi , logger , cancellationToken ) ;
100
80
101
- document = result . OpenApiDocument ;
102
- stopwatch . Stop ( ) ;
81
+ // Parsing OpenAPI file
82
+ stopwatch . Start ( ) ;
83
+ logger . LogTrace ( "Parsing OpenApi file" ) ;
84
+ var result = new OpenApiStreamReader ( new OpenApiReaderSettings
85
+ {
86
+ ReferenceResolution = resolveexternal ? ReferenceResolutionSetting . ResolveAllReferences : ReferenceResolutionSetting . ResolveLocalReferences ,
87
+ RuleSet = ValidationRuleSet . GetDefaultRuleSet ( )
88
+ }
89
+ ) . ReadAsync ( stream ) . GetAwaiter ( ) . GetResult ( ) ;
103
90
104
- var context = result . OpenApiDiagnostic ;
105
- if ( context . Errors . Count > 0 )
106
- {
107
- logger . LogTrace ( "{timestamp}ms: Parsed OpenAPI with errors. {count} paths found." , stopwatch . ElapsedMilliseconds , document . Paths . Count ) ;
91
+ document = result . OpenApiDocument ;
92
+ stopwatch . Stop ( ) ;
108
93
109
- var errorReport = new StringBuilder ( ) ;
94
+ var context = result . OpenApiDiagnostic ;
95
+ if ( context . Errors . Count > 0 )
96
+ {
97
+ logger . LogTrace ( "{timestamp}ms: Parsed OpenAPI with errors. {count} paths found." , stopwatch . ElapsedMilliseconds , document . Paths . Count ) ;
110
98
111
- foreach ( var error in context . Errors )
99
+ var errorReport = new StringBuilder ( ) ;
100
+
101
+ foreach ( var error in context . Errors )
102
+ {
103
+ logger . LogError ( "OpenApi Parsing error: {message}" , error . ToString ( ) ) ;
104
+ errorReport . AppendLine ( error . ToString ( ) ) ;
105
+ }
106
+ logger . LogError ( $ "{ stopwatch . ElapsedMilliseconds } ms: OpenApi Parsing errors { string . Join ( Environment . NewLine , context . Errors . Select ( e => e . Message ) . ToArray ( ) ) } ") ;
107
+ }
108
+ else
112
109
{
113
- logger . LogError ( "OpenApi Parsing error: {message}" , error . ToString ( ) ) ;
114
- errorReport . AppendLine ( error . ToString ( ) ) ;
110
+ logger . LogTrace ( "{timestamp}ms: Parsed OpenApi successfully. {count} paths found." , stopwatch . ElapsedMilliseconds , document . Paths . Count ) ;
115
111
}
116
- logger . LogError ( $ "{ stopwatch . ElapsedMilliseconds } ms: OpenApi Parsing errors { string . Join ( Environment . NewLine , context . Errors . Select ( e => e . Message ) . ToArray ( ) ) } ") ;
112
+
113
+ openApiFormat = format ?? GetOpenApiFormat ( openapi , logger ) ;
114
+ version ??= result . OpenApiDiagnostic . SpecificationVersion ;
117
115
}
118
- else
116
+
117
+ Func < string , OperationType ? , OpenApiOperation , bool > predicate ;
118
+
119
+ // Check if filter options are provided, then slice the OpenAPI document
120
+ if ( ! string . IsNullOrEmpty ( filterbyoperationids ) && ! string . IsNullOrEmpty ( filterbytags ) )
119
121
{
120
- logger . LogTrace ( "{timestamp}ms: Parsed OpenApi successfully. {count} paths found." , stopwatch . ElapsedMilliseconds , document . Paths . Count ) ;
122
+ throw new InvalidOperationException ( "Cannot filter by operationIds and tags at the same time." ) ;
121
123
}
124
+ if ( ! string . IsNullOrEmpty ( filterbyoperationids ) )
125
+ {
126
+ logger . LogTrace ( "Creating predicate based on the operationIds supplied." ) ;
127
+ predicate = OpenApiFilterService . CreatePredicate ( operationIds : filterbyoperationids ) ;
122
128
123
- openApiFormat = format ?? GetOpenApiFormat ( openapi , logger ) ;
124
- version ??= result . OpenApiDiagnostic . SpecificationVersion ;
125
- }
126
-
127
- Func < string , OperationType ? , OpenApiOperation , bool > predicate ;
129
+ logger . LogTrace ( "Creating subset OpenApi document." ) ;
130
+ document = OpenApiFilterService . CreateFilteredDocument ( document , predicate ) ;
131
+ }
132
+ if ( ! string . IsNullOrEmpty ( filterbytags ) )
133
+ {
134
+ logger . LogTrace ( "Creating predicate based on the tags supplied." ) ;
135
+ predicate = OpenApiFilterService . CreatePredicate ( tags : filterbytags ) ;
128
136
129
- // Check if filter options are provided, then slice the OpenAPI document
130
- if ( ! string . IsNullOrEmpty ( filterbyoperationids ) && ! string . IsNullOrEmpty ( filterbytags ) )
131
- {
132
- throw new InvalidOperationException ( "Cannot filter by operationIds and tags at the same time." ) ;
133
- }
134
- if ( ! string . IsNullOrEmpty ( filterbyoperationids ) )
135
- {
136
- logger . LogTrace ( "Creating predicate based on the operationIds supplied." ) ;
137
- predicate = OpenApiFilterService . CreatePredicate ( operationIds : filterbyoperationids ) ;
137
+ logger . LogTrace ( "Creating subset OpenApi document." ) ;
138
+ document = OpenApiFilterService . CreateFilteredDocument ( document , predicate ) ;
139
+ }
140
+ if ( ! string . IsNullOrEmpty ( filterbycollection ) )
141
+ {
142
+ var fileStream = await GetStream ( filterbycollection , logger , cancellationToken ) ;
143
+ var requestUrls = ParseJsonCollectionFile ( fileStream , logger ) ;
138
144
139
- logger . LogTrace ( "Creating subset OpenApi document." ) ;
140
- document = OpenApiFilterService . CreateFilteredDocument ( document , predicate ) ;
141
- }
142
- if ( ! string . IsNullOrEmpty ( filterbytags ) )
143
- {
144
- logger . LogTrace ( "Creating predicate based on the tags supplied." ) ;
145
- predicate = OpenApiFilterService . CreatePredicate ( tags : filterbytags ) ;
145
+ logger . LogTrace ( "Creating predicate based on the paths and Http methods defined in the Postman collection." ) ;
146
+ predicate = OpenApiFilterService . CreatePredicate ( requestUrls : requestUrls , source : document ) ;
146
147
147
- logger . LogTrace ( "Creating subset OpenApi document." ) ;
148
- document = OpenApiFilterService . CreateFilteredDocument ( document , predicate ) ;
149
- }
150
- if ( ! string . IsNullOrEmpty ( filterbycollection ) )
151
- {
152
- var fileStream = await GetStream ( filterbycollection , logger , cancellationToken ) ;
153
- var requestUrls = ParseJsonCollectionFile ( fileStream , logger ) ;
148
+ logger . LogTrace ( "Creating subset OpenApi document." ) ;
149
+ document = OpenApiFilterService . CreateFilteredDocument ( document , predicate ) ;
150
+ }
154
151
155
- logger . LogTrace ( "Creating predicate based on the paths and Http methods defined in the Postman collection." ) ;
156
- predicate = OpenApiFilterService . CreatePredicate ( requestUrls : requestUrls , source : document ) ;
152
+ logger . LogTrace ( "Creating a new file" ) ;
153
+ using var outputStream = output ? . Create ( ) ;
154
+ var textWriter = outputStream != null ? new StreamWriter ( outputStream ) : Console . Out ;
157
155
158
- logger . LogTrace ( "Creating subset OpenApi document." ) ;
159
- document = OpenApiFilterService . CreateFilteredDocument ( document , predicate ) ;
160
- }
161
-
162
- logger . LogTrace ( "Creating a new file" ) ;
163
- using var outputStream = output ? . Create ( ) ;
164
- var textWriter = outputStream != null ? new StreamWriter ( outputStream ) : Console . Out ;
156
+ var settings = new OpenApiWriterSettings ( )
157
+ {
158
+ ReferenceInline = inline ? ReferenceInlineSetting . InlineLocalReferences : ReferenceInlineSetting . DoNotInlineReferences
159
+ } ;
165
160
166
- var settings = new OpenApiWriterSettings ( )
167
- {
168
- ReferenceInline = inline ? ReferenceInlineSetting . InlineLocalReferences : ReferenceInlineSetting . DoNotInlineReferences
169
- } ;
161
+ IOpenApiWriter writer = openApiFormat switch
162
+ {
163
+ OpenApiFormat . Json => new OpenApiJsonWriter ( textWriter , settings ) ,
164
+ OpenApiFormat . Yaml => new OpenApiYamlWriter ( textWriter , settings ) ,
165
+ _ => throw new ArgumentException ( "Unknown format" ) ,
166
+ } ;
170
167
171
- IOpenApiWriter writer = openApiFormat switch
172
- {
173
- OpenApiFormat . Json => new OpenApiJsonWriter ( textWriter , settings ) ,
174
- OpenApiFormat . Yaml => new OpenApiYamlWriter ( textWriter , settings ) ,
175
- _ => throw new ArgumentException ( "Unknown format" ) ,
176
- } ;
168
+ logger . LogTrace ( "Serializing to OpenApi document using the provided spec version and writer" ) ;
177
169
178
- logger . LogTrace ( "Serializing to OpenApi document using the provided spec version and writer" ) ;
179
-
180
- stopwatch . Start ( ) ;
181
- document . Serialize ( writer , ( OpenApiSpecVersion ) version ) ;
182
- stopwatch . Stop ( ) ;
170
+ stopwatch . Start ( ) ;
171
+ document . Serialize ( writer , ( OpenApiSpecVersion ) version ) ;
172
+ stopwatch . Stop ( ) ;
183
173
184
- logger . LogTrace ( $ "Finished serializing in { stopwatch . ElapsedMilliseconds } ms") ;
174
+ logger . LogTrace ( $ "Finished serializing in { stopwatch . ElapsedMilliseconds } ms") ;
185
175
186
- textWriter . Flush ( ) ;
176
+ textWriter . Flush ( ) ;
177
+ }
178
+ catch ( Exception ex )
179
+ {
180
+ #if DEBUG
181
+ logger . LogCritical ( ex , ex . Message ) ;
182
+ #else
183
+ logger . LogCritical ( ex . Message ) ;
184
+ #endif
185
+ return ;
186
+ }
187
187
}
188
188
189
189
/// <summary>
@@ -260,12 +260,7 @@ private static async Task<Stream> GetStream(string input, ILogger logger, Cancel
260
260
}
261
261
catch ( HttpRequestException ex )
262
262
{
263
- #if DEBUG
264
- logger . LogCritical ( ex , "Could not download the file at {inputPath}, reason: {exMessage}" , input , ex . Message ) ;
265
- #else
266
- logger . LogCritical ( "Could not download the file at {inputPath}, reason: {exMessage}" , input , ex . Message ) ;
267
- #endif
268
- return null ;
263
+ throw new InvalidOperationException ( $ "Could not download the file at { input } ", ex ) ;
269
264
}
270
265
}
271
266
else
@@ -283,12 +278,7 @@ ex is UnauthorizedAccessException ||
283
278
ex is SecurityException ||
284
279
ex is NotSupportedException )
285
280
{
286
- #if DEBUG
287
- logger . LogCritical ( ex , "Could not open the file at {inputPath}, reason: {exMessage}" , input , ex . Message ) ;
288
- #else
289
- logger . LogCritical ( "Could not open the file at {inputPath}, reason: {exMessage}" , input , ex . Message ) ;
290
- #endif
291
- return null ;
281
+ throw new InvalidOperationException ( $ "Could not open the file at { input } ", ex ) ;
292
282
}
293
283
}
294
284
stopwatch . Stop ( ) ;
0 commit comments