in src/Microsoft.Azure.WebJobs.Extensions.OpenApi/OpenApiTriggerFunctions.cs [110:173]
public static async Task<IActionResult> RenderOpenApiDocument(
[OpenApiHttpTriggerContext] OpenApiHttpTriggerContext openApiContext,
HttpRequest req, string version, string extension, ExecutionContext ctx, ILogger log)
{
log.LogInformation($"{version}.{extension} was requested.");
var request = new HttpRequestObject(req);
var result = default(string);
var content = default(ContentResult);
try
{
var auth = await openApiContext.SetApplicationAssemblyAsync(ctx.FunctionAppDirectory)
.AuthorizeAsync(request)
.ConfigureAwait(false);
if (!auth.IsNullOrDefault())
{
content = new ContentResult()
{
Content = auth.Payload,
ContentType = auth.ContentType,
StatusCode = (int)auth.StatusCode,
};
return content;
}
result = await openApiContext.Document
.InitialiseDocument()
.AddMetadata(openApiContext.OpenApiConfigurationOptions.Info)
.AddServer(new HttpRequestObject(req), openApiContext.HttpSettings.RoutePrefix, openApiContext.OpenApiConfigurationOptions)
.AddNamingStrategy(openApiContext.NamingStrategy)
.AddVisitors(openApiContext.GetVisitorCollection())
.Build(openApiContext.ApplicationAssembly, openApiContext.GetOpenApiVersionType(version))
.ApplyDocumentFilters(openApiContext.GetDocumentFilterCollection())
.RenderAsync(openApiContext.GetOpenApiSpecVersion(version), openApiContext.GetOpenApiFormat(extension))
.ConfigureAwait(false);
content = new ContentResult()
{
Content = result,
ContentType = openApiContext.GetOpenApiFormat(extension).GetContentType(),
StatusCode = (int)HttpStatusCode.OK,
};
}
catch (Exception ex)
{
log.LogError(ex.Message);
result = ex.Message;
if (openApiContext.IsDevelopment)
{
result += "\r\n\r\n";
result += ex.StackTrace;
}
content = new ContentResult()
{
Content = result,
ContentType = ContentTypeText,
StatusCode = (int)HttpStatusCode.InternalServerError,
};
}
return content;
}