Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Simplify.Web.Swagger/ControllerActionsFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -164,4 +164,4 @@ private static OpenApiResponse CreateResponse(ProducesResponseAttribute produces

return response;
}
}
}
29 changes: 29 additions & 0 deletions src/Simplify.Web.Swagger/EnumNamesSchemaFilter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using System;
using System.Linq;
using Microsoft.OpenApi.Any;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;

namespace Simplify.Web.Swagger;

/// <summary>
/// Adds names extension and a human-readable description to enum schemas.
/// </summary>
public class EnumNamesSchemaFilter : ISchemaFilter
{
/// <inheritdoc />
public void Apply(OpenApiSchema schema, SchemaFilterContext context)
{
if (!context.Type.IsEnum)
return;

var names = Enum.GetNames(context.Type);
var values = Enum.GetValues(context.Type).Cast<int>().ToArray();

var varnames = new OpenApiArray();
foreach (var name in names)
varnames.Add(new OpenApiString(name));

schema.Extensions["names"] = varnames;
}
}
2 changes: 1 addition & 1 deletion src/Simplify.Web.Swagger/RequestBodyAttribute.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,4 @@ public class RequestBodyAttribute(Type model, string contentType = "application/
/// The type of the content.
/// </value>
public string ContentType { get; private set; } = contentType;
}
}
2 changes: 1 addition & 1 deletion src/Simplify.Web.Swagger/Simplify.Web.Swagger.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
<GenerateDocumentationFile>true</GenerateDocumentationFile>

<Version>1.2</Version>
<Version>1.3</Version>

<Description>Swagger extensions for Simplify.Web web-framework</Description>
<Product>Simplify</Product>
Expand Down
2 changes: 2 additions & 0 deletions src/Simplify.Web.Swagger/SimplifyWebSwaggerExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,7 @@ public static void AddSimplifyWebSwagger(this SwaggerGenOptions options, Simplif
options.DocumentFilter<SimplifyWebDocumentFilter>();
else
options.DocumentFilter<SimplifyWebDocumentFilter>(args);

options.SchemaFilter<EnumNamesSchemaFilter>();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,14 @@ public override ControllerResponse Invoke()
new()
{
UserName = "User 1",
CreationTime = DateTime.Now
CreationTime = DateTime.Now,
Role = UserRole.Admin
},
new()
{
UserName = "User 2",
CreationTime = DateTime.Now.Subtract(TimeSpan.FromDays(1))
CreationTime = DateTime.Now.Subtract(TimeSpan.FromDays(1)),
Role = UserRole.User
}
};

Expand Down
9 changes: 9 additions & 0 deletions src/TesterApp/ViewModels/Users/UserRole.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace TesterApp.ViewModels.Users;

public enum UserRole
{
Guest,
User,
Moderator,
Admin
}
1 change: 1 addition & 0 deletions src/TesterApp/ViewModels/Users/UserViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ public class UserViewModel
{
public string UserName { get; set; }
public DateTime CreationTime { get; set; }
public UserRole Role { get; set; }
}
Loading