@@ -165,50 +165,25 @@ internal void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion versio
165
165
166
166
writer . WriteEndObject ( ) ;
167
167
}
168
-
169
- /// <inheritdoc/>
170
- public void SerializeAsV2 ( IOpenApiWriter writer )
168
+ /// <summary>
169
+ /// Write the "in" property for V2 serialization.
170
+ /// </summary>
171
+ /// <param name="writer">Writer to use for the serialization</param>
172
+ internal virtual void WriteInPropertyForV2 ( IOpenApiWriter writer )
171
173
{
172
- Utils . CheckArgumentNull ( writer ) ;
173
-
174
- writer . WriteStartObject ( ) ;
175
-
176
- // in
177
- if ( this is OpenApiFormDataParameter )
178
- {
179
- writer . WriteProperty ( OpenApiConstants . In , "formData" ) ;
180
- }
181
- else if ( this is OpenApiBodyParameter )
182
- {
183
- writer . WriteProperty ( OpenApiConstants . In , "body" ) ;
184
- }
185
- else
186
- {
187
- writer . WriteProperty ( OpenApiConstants . In , In ? . GetDisplayName ( ) ) ;
188
- }
189
-
190
- // name
191
- writer . WriteProperty ( OpenApiConstants . Name , Name ) ;
192
-
193
- // description
194
- writer . WriteProperty ( OpenApiConstants . Description , Description ) ;
195
-
196
- // required
197
- writer . WriteProperty ( OpenApiConstants . Required , Required , false ) ;
198
-
199
- // deprecated
200
- writer . WriteProperty ( OpenApiConstants . Deprecated , Deprecated , false ) ;
201
-
202
- var extensionsClone = Extensions is not null ? new Dictionary < string , IOpenApiExtension > ( Extensions ) : null ;
174
+ writer . WriteProperty ( OpenApiConstants . In , In ? . GetDisplayName ( ) ) ;
175
+ }
203
176
204
- // schema
205
- if ( this is OpenApiBodyParameter )
206
- {
207
- writer . WriteOptionalObject ( OpenApiConstants . Schema , Schema , ( w , s ) => s . SerializeAsV2 ( w ) ) ;
208
- }
177
+ /// <summary>
178
+ /// Write the request body schema for V2 serialization.
179
+ /// </summary>
180
+ /// <param name="writer">Writer to use for the serialization</param>
181
+ /// <param name="extensionsClone">Extensions clone</param>
182
+ internal virtual void WriteRequestBodySchemaForV2 ( IOpenApiWriter writer , Dictionary < string , IOpenApiExtension > ? extensionsClone )
183
+ {
209
184
// In V2 parameter's type can't be a reference to a custom object schema or can't be of type object
210
185
// So in that case map the type as string.
211
- else if ( Schema is OpenApiSchemaReference { UnresolvedReference : true } || ( Schema ? . Type & JsonSchemaType . Object ) == JsonSchemaType . Object )
186
+ if ( Schema is OpenApiSchemaReference { UnresolvedReference : true } || ( Schema ? . Type & JsonSchemaType . Object ) == JsonSchemaType . Object )
212
187
{
213
188
writer . WriteProperty ( OpenApiConstants . Type , "string" ) ;
214
189
}
@@ -270,7 +245,34 @@ public void SerializeAsV2(IOpenApiWriter writer)
270
245
}
271
246
}
272
247
}
248
+ }
249
+
250
+ /// <inheritdoc/>
251
+ public void SerializeAsV2 ( IOpenApiWriter writer )
252
+ {
253
+ Utils . CheckArgumentNull ( writer ) ;
254
+
255
+ writer . WriteStartObject ( ) ;
256
+
257
+ // in
258
+ WriteInPropertyForV2 ( writer ) ;
273
259
260
+ // name
261
+ writer . WriteProperty ( OpenApiConstants . Name , Name ) ;
262
+
263
+ // description
264
+ writer . WriteProperty ( OpenApiConstants . Description , Description ) ;
265
+
266
+ // required
267
+ writer . WriteProperty ( OpenApiConstants . Required , Required , false ) ;
268
+
269
+ // deprecated
270
+ writer . WriteProperty ( OpenApiConstants . Deprecated , Deprecated , false ) ;
271
+
272
+ var extensionsClone = Extensions is not null ? new Dictionary < string , IOpenApiExtension > ( Extensions ) : null ;
273
+
274
+ // schema
275
+ WriteRequestBodySchemaForV2 ( writer , extensionsClone ) ;
274
276
//examples
275
277
if ( Examples != null && Examples . Any ( ) )
276
278
{
@@ -315,12 +317,24 @@ public IOpenApiParameter CreateShallowCopy()
315
317
/// </summary>
316
318
internal class OpenApiBodyParameter : OpenApiParameter
317
319
{
320
+ internal override void WriteRequestBodySchemaForV2 ( IOpenApiWriter writer , Dictionary < string , IOpenApiExtension > ? extensionsClone )
321
+ {
322
+ writer . WriteOptionalObject ( OpenApiConstants . Schema , Schema , ( w , s ) => s . SerializeAsV2 ( w ) ) ;
323
+ }
324
+ internal override void WriteInPropertyForV2 ( IOpenApiWriter writer )
325
+ {
326
+ writer . WriteProperty ( OpenApiConstants . In , "body" ) ;
327
+ }
318
328
}
319
329
320
330
/// <summary>
321
331
/// Form parameter class to propagate information needed for <see cref="OpenApiParameter.SerializeAsV2"/>
322
332
/// </summary>
323
333
internal class OpenApiFormDataParameter : OpenApiParameter
324
334
{
335
+ internal override void WriteInPropertyForV2 ( IOpenApiWriter writer )
336
+ {
337
+ writer . WriteProperty ( OpenApiConstants . In , "formData" ) ;
338
+ }
325
339
}
326
340
}
0 commit comments