60 lines
1.7 KiB
C#
60 lines
1.7 KiB
C#
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
using Femto.Modules.Auth.Application;
|
|
using Femto.Modules.Blog.Application;
|
|
using Femto.Modules.Media.Application;
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
builder.Services.AddOpenApi();
|
|
|
|
var connectionString = builder.Configuration.GetConnectionString("Database");
|
|
if (connectionString is null)
|
|
throw new Exception("no database connection string found");
|
|
|
|
var blobStorageRoot = builder.Configuration.GetValue<string>("BlobStorageRoot");
|
|
if (blobStorageRoot is null)
|
|
throw new Exception("no blob storage root found");
|
|
|
|
builder.Services.InitializeBlogModule(connectionString);
|
|
builder.Services.InitializeMediaModule(connectionString, blobStorageRoot);
|
|
builder.Services.InitializeAuthenticationModule(connectionString);
|
|
|
|
builder.Services.AddControllers();
|
|
|
|
builder.Services.AddCors(options =>
|
|
{
|
|
options.AddPolicy(
|
|
"DefaultCorsPolicy",
|
|
b =>
|
|
{
|
|
b.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin();
|
|
}
|
|
);
|
|
});
|
|
|
|
builder
|
|
.Services.AddControllers()
|
|
.AddJsonOptions(options =>
|
|
{
|
|
options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
|
|
options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
|
|
options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase;
|
|
options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
|
|
options.JsonSerializerOptions.NumberHandling = JsonNumberHandling.AllowReadingFromString;
|
|
});
|
|
|
|
var app = builder.Build();
|
|
|
|
app.UseCors("DefaultCorsPolicy");
|
|
|
|
if (app.Environment.IsDevelopment())
|
|
{
|
|
app.MapOpenApi();
|
|
}
|
|
|
|
app.MapControllers();
|
|
|
|
app.UseHttpsRedirection();
|
|
|
|
app.Run();
|