MyStitcher/StitchImg/Program.cs

52 lines
1.4 KiB
C#
Raw Normal View History

2025-07-07 16:07:14 +07:00
using Microsoft.OpenApi.Models;
using Newtonsoft.Json.Serialization;
using Swashbuckle.AspNetCore.SwaggerGen;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers()
.AddNewtonsoftJson(options =>
{
options.SerializerSettings.ContractResolver = new DefaultContractResolver
{
NamingStrategy = new SnakeCaseNamingStrategy()
};
});
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =>
{
c.SchemaFilter<SnakeCaseSchemaFilter>();
});
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.MapControllers();
app.Run();
public class SnakeCaseSchemaFilter : ISchemaFilter
{
private readonly SnakeCaseNamingStrategy _namingStrategy = new();
public void Apply(OpenApiSchema schema, SchemaFilterContext context)
{
if (schema.Properties == null) return;
var newProps = new Dictionary<string, OpenApiSchema>();
foreach (var prop in schema.Properties)
{
var snakeName = _namingStrategy.GetPropertyName(prop.Key, false);
newProps[snakeName] = prop.Value;
}
schema.Properties = newProps;
}
}