Skip to content

Commit 8b4833c

Browse files
committed
fix: v2 request body content null propagation
1 parent ffac64e commit 8b4833c

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

src/Microsoft.OpenApi/Models/OpenApiOperation.cs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -237,18 +237,18 @@ public void SerializeAsV2(IOpenApiWriter writer)
237237
List<OpenApiParameter> parameters;
238238
if (Parameters == null)
239239
{
240-
parameters = new();
240+
parameters = [];
241241
}
242242
else
243243
{
244-
parameters = new(Parameters);
244+
parameters = [.. Parameters];
245245
}
246246

247247
if (RequestBody != null)
248248
{
249249
// consumes
250-
var consumes = RequestBody.Content.Keys.Distinct().ToList();
251-
if (consumes.Any())
250+
var consumes = new HashSet<string>(RequestBody.Content?.Keys.Distinct(StringComparer.OrdinalIgnoreCase) ?? [], StringComparer.OrdinalIgnoreCase);
251+
if (consumes.Count > 0)
252252
{
253253
// This is form data. We need to split the request body into multiple parameters.
254254
if (consumes.Contains("application/x-www-form-urlencoded") ||
@@ -261,19 +261,18 @@ public void SerializeAsV2(IOpenApiWriter writer)
261261
parameters.Add(RequestBody.ConvertToBodyParameter());
262262
}
263263
}
264-
else if (RequestBody.Reference != null)
264+
else if (RequestBody.Reference != null && RequestBody.Reference.HostDocument is {} hostDocument)
265265
{
266-
var hostDocument = RequestBody.Reference.HostDocument;
267266
parameters.Add(
268267
new OpenApiParameterReference(RequestBody.Reference.Id, hostDocument));
269268

270269
if (hostDocument != null)
271270
{
272-
consumes = RequestBody.Content.Keys.Distinct().ToList();
271+
consumes = new (RequestBody.Content?.Keys.Distinct(StringComparer.OrdinalIgnoreCase) ?? [], StringComparer.OrdinalIgnoreCase);
273272
}
274273
}
275274

276-
if (consumes.Any())
275+
if (consumes.Count > 0)
277276
{
278277
writer.WritePropertyName(OpenApiConstants.Consumes);
279278
writer.WriteStartArray();
@@ -294,10 +293,10 @@ public void SerializeAsV2(IOpenApiWriter writer)
294293
Responses
295294
.Where(static r => r.Value.Reference is {HostDocument: not null})
296295
.SelectMany(static r => r.Value.Content?.Keys))
297-
.Distinct()
298-
.ToList();
296+
.Distinct(StringComparer.OrdinalIgnoreCase)
297+
.ToArray();
299298

300-
if (produces.Any())
299+
if (produces.Length > 0)
301300
{
302301
// produces
303302
writer.WritePropertyName(OpenApiConstants.Produces);

0 commit comments

Comments
 (0)