Skip to content

Commit 6d064c4

Browse files
authored
Merge pull request #2042 from microsoft/fix/v2-request-body-content
fix: v2 request body content null propagation
2 parents 4030c1f + 8d70195 commit 6d064c4

File tree

1 file changed

+9
-15
lines changed

1 file changed

+9
-15
lines changed

src/Microsoft.OpenApi/Models/OpenApiOperation.cs

+9-15
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,13 @@ 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));
269-
270-
if (hostDocument != null)
271-
{
272-
consumes = RequestBody.Content.Keys.Distinct().ToList();
273-
}
274268
}
275269

276-
if (consumes.Any())
270+
if (consumes.Count > 0)
277271
{
278272
writer.WritePropertyName(OpenApiConstants.Consumes);
279273
writer.WriteStartArray();
@@ -294,10 +288,10 @@ public void SerializeAsV2(IOpenApiWriter writer)
294288
Responses
295289
.Where(static r => r.Value.Reference is {HostDocument: not null})
296290
.SelectMany(static r => r.Value.Content?.Keys))
297-
.Distinct()
298-
.ToList();
291+
.Distinct(StringComparer.OrdinalIgnoreCase)
292+
.ToArray();
299293

300-
if (produces.Any())
294+
if (produces.Length > 0)
301295
{
302296
// produces
303297
writer.WritePropertyName(OpenApiConstants.Produces);

0 commit comments

Comments
 (0)