public async Task RenderOpenApiDocument()

in src/Microsoft.Azure.Functions.Worker.Extensions.OpenApi/Functions/OpenApiTriggerFunction.cs [95:151]


        public async Task<HttpResponseData> RenderOpenApiDocument(HttpRequestData req, string version, string extension, FunctionContext ctx)
        {
            var log = ctx.GetLogger(nameof(OpenApiTriggerFunction));
            log.LogInformation($"{version}.{extension} was requested.");

            var fi = new FileInfo(ctx.FunctionDefinition.PathToAssembly);
            var request = new HttpRequestObject(req);
            var result = default(string);
            var response = default(HttpResponseData);
            try
            {
                var auth = await this._context
                                     .SetApplicationAssemblyAsync(fi.Directory.FullName, appendBin: false)
                                     .AuthorizeAsync(request)
                                     .ConfigureAwait(false);
                if (!auth.IsNullOrDefault())
                {
                    response = req.CreateResponse(auth.StatusCode);
                    response.Headers.Add("Content-Type", auth.ContentType);
                    await response.WriteStringAsync(auth.Payload).ConfigureAwait(false);

                    return response;
                }

                result = await this._context
                                   .Document
                                   .InitialiseDocument()
                                   .AddMetadata(this._context.OpenApiConfigurationOptions.Info)
                                   .AddServer(request, this._context.HttpSettings.RoutePrefix, this._context.OpenApiConfigurationOptions)
                                   .AddNamingStrategy(this._context.NamingStrategy)
                                   .AddVisitors(this._context.GetVisitorCollection())
                                   .Build(this._context.ApplicationAssembly, this._context.GetOpenApiVersionType(version))
                                   .ApplyDocumentFilters(this._context.GetDocumentFilterCollection())
                                   .RenderAsync(this._context.GetOpenApiSpecVersion(version), this._context.GetOpenApiFormat(extension))
                                   .ConfigureAwait(false);

                response = req.CreateResponse(HttpStatusCode.OK);
                response.Headers.Add("Content-Type", this._context.GetOpenApiFormat(extension).GetContentType());
                await response.WriteStringAsync(result).ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                log.LogError(ex.Message);

                result = ex.Message;
                if (this._context.IsDevelopment)
                {
                    result += "\r\n\r\n";
                    result += ex.StackTrace;
                }
                response = req.CreateResponse(HttpStatusCode.InternalServerError);
                response.Headers.Add("Content-Type", ContentTypeText);
                await response.WriteStringAsync(result).ConfigureAwait(false);
            }

            return response;
        }