Skip to content

Commit b84ea19

Browse files
committed
fix: request body references are converted to v2 properly
Signed-off-by: Vincent Biret <[email protected]>
1 parent 8a2b07c commit b84ea19

File tree

4 files changed

+17
-4
lines changed

4 files changed

+17
-4
lines changed

src/Microsoft.OpenApi/Models/OpenApiDocument.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ public void SerializeAsV2(IOpenApiWriter writer)
283283
{
284284
foreach (var requestBody in Components.RequestBodies.Where(b => !parameters.ContainsKey(b.Key)))
285285
{
286-
parameters.Add(requestBody.Key, requestBody.Value.ConvertToBodyParameter());
286+
parameters.Add(requestBody.Key, requestBody.Value.ConvertToBodyParameter(writer));
287287
}
288288
}
289289
writer.WriteOptionalMap(

src/Microsoft.OpenApi/Models/OpenApiOperation.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ private void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version
212212
/// </summary>
213213
public void SerializeAsV2(IOpenApiWriter writer)
214214
{
215-
Utils.CheckArgumentNull(writer);;
215+
Utils.CheckArgumentNull(writer);
216216

217217
writer.WriteStartObject();
218218

@@ -258,7 +258,7 @@ public void SerializeAsV2(IOpenApiWriter writer)
258258
}
259259
else
260260
{
261-
parameters.Add(RequestBody.ConvertToBodyParameter());
261+
parameters.Add(RequestBody.ConvertToBodyParameter(writer));
262262
}
263263
}
264264
else if (RequestBody.Reference != null && RequestBody.Reference.HostDocument is {} hostDocument)

src/Microsoft.OpenApi/Models/OpenApiRequestBody.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public void SerializeAsV2(IOpenApiWriter writer)
112112
// RequestBody object does not exist in V2.
113113
}
114114

115-
internal OpenApiBodyParameter ConvertToBodyParameter()
115+
internal virtual OpenApiParameter ConvertToBodyParameter(IOpenApiWriter writer)
116116
{
117117
var bodyParameter = new OpenApiBodyParameter
118118
{

src/Microsoft.OpenApi/Models/References/OpenApiRequestBodyReference.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,5 +119,18 @@ private void SerializeInternal(IOpenApiWriter writer,
119119
Utils.CheckArgumentNull(writer);
120120
action(writer, Target);
121121
}
122+
123+
/// <inheritdoc/>
124+
internal override OpenApiParameter ConvertToBodyParameter(IOpenApiWriter writer)
125+
{
126+
if (writer.GetSettings().ShouldInlineReference(_reference))
127+
{
128+
return Target.ConvertToBodyParameter(writer);
129+
}
130+
else
131+
{
132+
return new OpenApiParameterReference(_reference.Id, _reference.HostDocument);
133+
}
134+
}
122135
}
123136
}

0 commit comments

Comments
 (0)