diff --git a/src/OpenAPI.WebApiGenerator/ApiGenerator.cs b/src/OpenAPI.WebApiGenerator/ApiGenerator.cs
index a70fd1a..776ca45 100644
--- a/src/OpenAPI.WebApiGenerator/ApiGenerator.cs
+++ b/src/OpenAPI.WebApiGenerator/ApiGenerator.cs
@@ -156,10 +156,9 @@ private static void GenerateCode(SourceProductionContext context,
var responses = operation.Responses ??
throw new InvalidOperationException(
$"No responses defined for operation at {openApiOperationVisitor.Pointer}");
- var responseBodyGenerators = responses.Select(pair =>
+ var responseBodyGenerators = responses.Select(content =>
{
- var response = pair.Value;
- var responseStatusCodePattern = pair.Key.ToPascalCase();
+ var response = content.Value;
var openApiResponseVisitor = openApiOperationVisitor.Visit(response);
var responseContent =
@@ -186,7 +185,7 @@ private static void GenerateCode(SourceProductionContext context,
}).ToList() ?? [];
return new ResponseContentGenerator(
- responseStatusCodePattern,
+ content,
responseBodyGenerators,
responseHeaderGenerators);
}).ToList();
diff --git a/src/OpenAPI.WebApiGenerator/CodeGeneration/ApiConfigurationGenerator.cs b/src/OpenAPI.WebApiGenerator/CodeGeneration/ApiConfigurationGenerator.cs
index 9b240e8..946b325 100644
--- a/src/OpenAPI.WebApiGenerator/CodeGeneration/ApiConfigurationGenerator.cs
+++ b/src/OpenAPI.WebApiGenerator/CodeGeneration/ApiConfigurationGenerator.cs
@@ -23,6 +23,9 @@ public sealed class {{ClassName}}
public Uri? OpenApiSpecificationUri { get; init; }{{(authGenerator.HasSecuritySchemes ?
"""
+ ///
+ /// Security scheme options
+ ///
internal SecuritySchemeOptions SecuritySchemeOptions { get; set; } = new();
""" : "")}}
}
diff --git a/src/OpenAPI.WebApiGenerator/CodeGeneration/AuthGenerator.cs b/src/OpenAPI.WebApiGenerator/CodeGeneration/AuthGenerator.cs
index 9846f48..e5ac4e1 100644
--- a/src/OpenAPI.WebApiGenerator/CodeGeneration/AuthGenerator.cs
+++ b/src/OpenAPI.WebApiGenerator/CodeGeneration/AuthGenerator.cs
@@ -2,7 +2,6 @@
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
-using System.Reflection.Metadata;
using Microsoft.OpenApi;
using OpenAPI.WebApiGenerator.Extensions;
@@ -38,6 +37,9 @@ public AuthGenerator(OpenApiDocument openApiDocument)
namespace {{@namespace}};
+///
+/// Defines security schemes that can be used by the operations
+///
internal static class SecuritySchemes
{{{_securitySchemes.AggregateToString(pair =>
{
@@ -47,10 +49,10 @@ internal static class SecuritySchemes
return scheme.Type == null ? string.Empty :
$$"""
internal const string {{className}}Key = "{{pair.Key}}";
+{{scheme.Description.AsComment("summary", "para").Indent(4)}}
internal static class {{className}}
{{{new []
{
- GenerateConst(nameof(scheme.Description), scheme.Description),
GenerateConst(nameof(scheme.Type), scheme.Type?.GetDisplayName()),
GenerateConst(nameof(scheme.Scheme), scheme.Scheme),
GenerateConst(nameof(scheme.BearerFormat), scheme.BearerFormat),
@@ -59,7 +61,7 @@ internal static class {{className}}
$"internal const bool {nameof(scheme.Deprecated)} = {scheme.Deprecated.ToString().ToLowerInvariant()};",
GenerateFlowsObject(nameof(scheme.Flows), scheme.Flows)
}.RemoveEmptyLines().AggregateToString().Indent(8)}}
- }
+ }
""";
})}}
}
@@ -218,13 +220,18 @@ internal static class {{className}}
namespace {{@namespace}};
+///
+/// Base class for handling security requirements for an operation
+///
internal abstract class BaseSecurityRequirementsFilter(WebApiConfiguration configuration) : IEndpointFilter
{
protected abstract SecurityRequirements Requirements { get; }
+ protected WebApiConfiguration Configuration { get; } = configuration;
protected abstract void HandleForbidden(HttpResponse response);
protected abstract void HandleUnauthorized(HttpResponse response);
+ ///
public async ValueTask