6
6
using System . Linq ;
7
7
using Microsoft . OpenApi . Interfaces ;
8
8
using Microsoft . OpenApi . Models ;
9
+ using Microsoft . OpenApi . Readers . Exceptions ;
9
10
using Microsoft . OpenApi . Readers . Interface ;
10
11
using Microsoft . OpenApi . Readers . ParseNodes ;
11
12
using Microsoft . OpenApi . Readers . V2 ;
@@ -41,26 +42,24 @@ internal OpenApiDocument Parse(YamlDocument yamlDocument, OpenApiDiagnostic diag
41
42
42
43
OpenApiDocument doc ;
43
44
44
- if ( inputVersion == "2.0" )
45
+ switch ( inputVersion )
45
46
{
46
- VersionService = new OpenApiV2VersionService ( ) ;
47
- doc = this . VersionService . LoadDocument ( this . RootNode ) ;
48
- diagnostic . SpecificationVersion = OpenApiSpecVersion . OpenApi2_0 ;
49
- }
50
- else if ( inputVersion . StartsWith ( "3.0." ) )
51
- {
52
- this . VersionService = new OpenApiV3VersionService ( ) ;
53
- doc = this . VersionService . LoadDocument ( this . RootNode ) ;
54
- diagnostic . SpecificationVersion = OpenApiSpecVersion . OpenApi3_0 ;
55
- }
56
- else
57
- {
58
- // If version number is not recognizable,
59
- // our best effort will try to deserialize the document to V3.
60
- this . VersionService = new OpenApiV3VersionService ( ) ;
61
- doc = this . VersionService . LoadDocument ( this . RootNode ) ;
62
- diagnostic . SpecificationVersion = OpenApiSpecVersion . OpenApi3_0 ;
47
+ case string version when version == "2.0" :
48
+ VersionService = new OpenApiV2VersionService ( ) ;
49
+ doc = this . VersionService . LoadDocument ( this . RootNode ) ;
50
+ diagnostic . SpecificationVersion = OpenApiSpecVersion . OpenApi2_0 ;
51
+ break ;
52
+
53
+ case string version when version . StartsWith ( "3.0" ) :
54
+ this . VersionService = new OpenApiV3VersionService ( ) ;
55
+ doc = this . VersionService . LoadDocument ( this . RootNode ) ;
56
+ diagnostic . SpecificationVersion = OpenApiSpecVersion . OpenApi3_0 ;
57
+ break ;
58
+
59
+ default :
60
+ throw new OpenApiUnsupportedSpecVersionException ( inputVersion ) ;
63
61
}
62
+
64
63
return doc ;
65
64
}
66
65
@@ -81,7 +80,7 @@ private static string GetVersion(RootNode rootNode)
81
80
return versionNode ? . GetScalarValue ( ) ;
82
81
}
83
82
84
- private void ComputeTags ( List < OpenApiTag > tags , Func < MapNode , OpenApiTag > loadTag )
83
+ private void ComputeTags ( List < OpenApiTag > tags , Func < MapNode , OpenApiTag > loadTag )
85
84
{
86
85
// Precompute the tags array so that each tag reference does not require a new deserialization.
87
86
var tagListPointer = new JsonPointer ( "#/tags" ) ;
0 commit comments