Skip to content

Commit 040b4df

Browse files
[OpenAPI] Refactor MapOpenApi (#62194)
1 parent faf2696 commit 040b4df

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

src/OpenApi/src/Extensions/OpenApiEndpointRouteBuilderExtensions.cs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,21 +54,27 @@ public static IEndpointConventionBuilder MapOpenApi(this IEndpointRouteBuilder e
5454
var document = await documentService.GetOpenApiDocumentAsync(context.RequestServices, context.Request, context.RequestAborted);
5555
var documentOptions = options.Get(lowercasedDocumentName);
5656

57-
using var writer = new Utf8BufferTextWriter();
58-
writer.SetWriter(context.Response.BodyWriter);
57+
using var textWriter = new Utf8BufferTextWriter();
58+
textWriter.SetWriter(context.Response.BodyWriter);
59+
60+
string contentType;
61+
OpenApiWriterBase openApiWriter;
5962

6063
if (UseYaml(pattern))
6164
{
62-
context.Response.ContentType = "text/plain+yaml;charset=utf-8";
63-
await context.Response.StartAsync();
64-
await document.SerializeAsync(new OpenApiYamlWriter(writer), documentOptions.OpenApiVersion, context.RequestAborted);
65+
contentType = "text/plain+yaml;charset=utf-8";
66+
openApiWriter = new OpenApiYamlWriter(textWriter);
6567
}
6668
else
6769
{
68-
context.Response.ContentType = "application/json;charset=utf-8";
69-
await context.Response.StartAsync();
70-
await document.SerializeAsync(new OpenApiJsonWriter(writer), documentOptions.OpenApiVersion, context.RequestAborted);
70+
contentType = "application/json;charset=utf-8";
71+
openApiWriter = new OpenApiJsonWriter(textWriter);
7172
}
73+
74+
context.Response.ContentType = contentType;
75+
76+
await context.Response.StartAsync();
77+
await document.SerializeAsync(openApiWriter, documentOptions.OpenApiVersion, context.RequestAborted);
7278
await context.Response.BodyWriter.FlushAsync(context.RequestAborted);
7379
}
7480
}).ExcludeFromDescription();

0 commit comments

Comments
 (0)