From 16afc0bc6915ac4a0662ab00ca9b18375cc621e4 Mon Sep 17 00:00:00 2001 From: Polianin Nikita Date: Sun, 2 Feb 2025 03:29:19 +0300 Subject: [PATCH] feat: show enum name instead value --- .../Core/Startup/SwaggerConfiguration.cs | 1 + .../SwaggerOptions/EnumSchemaFilter.cs | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 Endpoint/Configuration/SwaggerOptions/EnumSchemaFilter.cs diff --git a/Endpoint/Configuration/Core/Startup/SwaggerConfiguration.cs b/Endpoint/Configuration/Core/Startup/SwaggerConfiguration.cs index bdabff9..ae6f3f9 100644 --- a/Endpoint/Configuration/Core/Startup/SwaggerConfiguration.cs +++ b/Endpoint/Configuration/Core/Startup/SwaggerConfiguration.cs @@ -21,6 +21,7 @@ public static class SwaggerConfiguration options.SchemaFilter(); options.OperationFilter(); options.OperationFilter(); + options.SchemaFilter(); var basePath = AppDomain.CurrentDomain.BaseDirectory; options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme diff --git a/Endpoint/Configuration/SwaggerOptions/EnumSchemaFilter.cs b/Endpoint/Configuration/SwaggerOptions/EnumSchemaFilter.cs new file mode 100644 index 0000000..f64fc87 --- /dev/null +++ b/Endpoint/Configuration/SwaggerOptions/EnumSchemaFilter.cs @@ -0,0 +1,28 @@ +using Microsoft.OpenApi.Any; +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerGen; +using System; +using System.Linq; + +namespace Mirea.Api.Endpoint.Configuration.SwaggerOptions; + +public class EnumSchemaFilter : ISchemaFilter +{ + public void Apply(OpenApiSchema schema, SchemaFilterContext context) + { + if (!context.Type.IsEnum) + return; + + schema.Enum.Clear(); + + var enumValues = Enum.GetNames(context.Type) + .Select(name => new OpenApiString(name)) + .ToList(); + + foreach (var value in enumValues) + schema.Enum.Add(value); + + schema.Type = "string"; + schema.Format = null; + } +} \ No newline at end of file