1
1
// Copyright (c) Microsoft Corporation. All rights reserved.
2
2
// Licensed under the MIT license.
3
3
4
+ using System ;
5
+ using Microsoft . OpenApi . Any ;
4
6
using Microsoft . OpenApi . Extensions ;
5
7
using Microsoft . OpenApi . Models ;
6
8
using Microsoft . OpenApi . Readers . ParseNodes ;
@@ -22,41 +24,108 @@ internal static partial class OpenApiV2Deserializer
22
24
}
23
25
} ,
24
26
{
25
- "required " , ( o , n ) =>
27
+ "type " , ( o , n ) =>
26
28
{
27
- o . Required = bool . Parse ( n . GetScalarValue ( ) ) ;
29
+ GetOrCreateSchema ( o ) . Type = n . GetScalarValue ( ) ;
28
30
}
29
31
} ,
30
32
{
31
- "deprecated " , ( o , n ) =>
33
+ "format " , ( o , n ) =>
32
34
{
33
- o . Deprecated = bool . Parse ( n . GetScalarValue ( ) ) ;
35
+ GetOrCreateSchema ( o ) . Format = n . GetScalarValue ( ) ;
34
36
}
35
37
} ,
36
38
{
37
- "allowReserved " , ( o , n ) =>
39
+ "items " , ( o , n ) =>
38
40
{
39
- o . AllowReserved = bool . Parse ( n . GetScalarValue ( ) ) ;
41
+ GetOrCreateSchema ( o ) . Items = LoadSchema ( n ) ;
40
42
}
41
43
} ,
42
44
{
43
- "style " , ( o , n ) =>
45
+ "collectionFormat " , ( o , n ) =>
44
46
{
45
- o . Style = n . GetScalarValue ( ) . GetEnumFromDisplayName < ParameterStyle > ( ) ;
47
+ LoadStyle ( o , n . GetScalarValue ( ) ) ;
46
48
}
47
49
} ,
48
50
{
49
- "type " , ( o , n ) =>
51
+ "default " , ( o , n ) =>
50
52
{
51
- GetOrCreateSchema ( o ) . Type = n . GetScalarValue ( ) ;
53
+ GetOrCreateSchema ( o ) . Default = n . CreateAny ( ) ;
54
+ }
55
+ } ,
56
+ {
57
+ "maximum" , ( o , n ) =>
58
+ {
59
+ GetOrCreateSchema ( o ) . Maximum = decimal . Parse ( n . GetScalarValue ( ) ) ;
52
60
}
53
61
} ,
54
62
{
55
- "format " , ( o , n ) =>
63
+ "exclusiveMaximum " , ( o , n ) =>
56
64
{
57
- GetOrCreateSchema ( o ) . Format = n . GetScalarValue ( ) ;
65
+ GetOrCreateSchema ( o ) . ExclusiveMaximum = bool . Parse ( n . GetScalarValue ( ) ) ;
66
+ }
67
+ } ,
68
+ {
69
+ "minimum" , ( o , n ) =>
70
+ {
71
+ GetOrCreateSchema ( o ) . Minimum = decimal . Parse ( n . GetScalarValue ( ) ) ;
58
72
}
59
73
} ,
74
+ {
75
+ "exclusiveMinimum" , ( o , n ) =>
76
+ {
77
+ GetOrCreateSchema ( o ) . ExclusiveMinimum = bool . Parse ( n . GetScalarValue ( ) ) ;
78
+ }
79
+ } ,
80
+ {
81
+ "maxLength" , ( o , n ) =>
82
+ {
83
+ GetOrCreateSchema ( o ) . MaxLength = int . Parse ( n . GetScalarValue ( ) ) ;
84
+ }
85
+ } ,
86
+ {
87
+ "minLength" , ( o , n ) =>
88
+ {
89
+ GetOrCreateSchema ( o ) . MinLength = int . Parse ( n . GetScalarValue ( ) ) ;
90
+ }
91
+ } ,
92
+ {
93
+ "pattern" , ( o , n ) =>
94
+ {
95
+ GetOrCreateSchema ( o ) . Pattern = n . GetScalarValue ( ) ;
96
+ }
97
+ } ,
98
+ {
99
+ "maxItems" , ( o , n ) =>
100
+ {
101
+ GetOrCreateSchema ( o ) . MaxItems = int . Parse ( n . GetScalarValue ( ) ) ;
102
+ }
103
+ } ,
104
+ {
105
+ "minItems" , ( o , n ) =>
106
+ {
107
+ GetOrCreateSchema ( o ) . MinItems = int . Parse ( n . GetScalarValue ( ) ) ;
108
+ }
109
+ } ,
110
+ {
111
+ "uniqueItems" , ( o , n ) =>
112
+ {
113
+ GetOrCreateSchema ( o ) . UniqueItems = bool . Parse ( n . GetScalarValue ( ) ) ;
114
+ }
115
+ } ,
116
+ {
117
+ "multipleOf" , ( o , n ) =>
118
+ {
119
+ GetOrCreateSchema ( o ) . MultipleOf = decimal . Parse ( n . GetScalarValue ( ) ) ;
120
+ }
121
+ } ,
122
+ {
123
+ "enum" , ( o , n ) =>
124
+ {
125
+ GetOrCreateSchema ( o ) . Enum =
126
+ n . CreateSimpleList < IOpenApiAny > ( l => new OpenApiString ( l . GetScalarValue ( ) ) ) ;
127
+ }
128
+ }
60
129
} ;
61
130
62
131
private static readonly PatternFieldMap < OpenApiHeader > _headerPatternFields = new PatternFieldMap < OpenApiHeader >
@@ -82,5 +151,28 @@ public static OpenApiHeader LoadHeader(ParseNode node)
82
151
83
152
return header ;
84
153
}
154
+
155
+
156
+ private static void LoadStyle ( OpenApiHeader h , string v )
157
+ {
158
+ switch ( v )
159
+ {
160
+ case "csv" :
161
+ h . Style = ParameterStyle . Simple ;
162
+ return ;
163
+ case "ssv" :
164
+ h . Style = ParameterStyle . SpaceDelimited ;
165
+ return ;
166
+ case "pipes" :
167
+ h . Style = ParameterStyle . PipeDelimited ;
168
+ return ;
169
+ case "tsv" :
170
+ throw new NotSupportedException ( ) ;
171
+ case "multi" :
172
+ h . Style = ParameterStyle . Form ;
173
+ h . Explode = true ;
174
+ return ;
175
+ }
176
+ }
85
177
}
86
178
}
0 commit comments