From c51ff4e755f009ca0bc8e935a92c04e583c4ee8a Mon Sep 17 00:00:00 2001 From: Jake Mannens Date: Tue, 17 Mar 2026 03:04:36 +1100 Subject: Initial commit --- Program.cs | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Program.cs (limited to 'Program.cs') diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..5863368 --- /dev/null +++ b/Program.cs @@ -0,0 +1,67 @@ +using HyperBooru.Services; +using Microsoft.AspNetCore.Authentication.Cookies; +using Microsoft.AspNetCore.DataProtection; +using Microsoft.AspNetCore.Http.Json; +using Microsoft.EntityFrameworkCore; +using System.Text.Json.Serialization; + +namespace HyperBooru; + +public class Program { + public static void Main(string[] args) { + var builder = WebApplication.CreateBuilder(args); + builder.Services.AddSession(); + builder.Services.AddHttpContextAccessor(); + builder.Services.AddAuthentication( + CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(); + builder.Services.AddAuthorization(); + builder.Services.AddControllers().AddJsonOptions(o => { + var converter = new JsonStringEnumConverter(); + o.JsonSerializerOptions.Converters.Add(converter); + }); + builder.Services.Configure(o => { + o.SerializerOptions.TypeInfoResolverChain.Insert(0, new ExceptionJsonResolver()); + }); + builder.Services.AddRazorPages(); + builder.Services.AddServerSideBlazor(); + + // Add our custom services + builder.Services.AddSingleton(); + builder.Services.AddDbContextFactory(); + builder.Services.AddScoped(); + builder.Services.AddScoped(); + builder.Services.AddScoped(); + builder.Services.AddSingleton(); + builder.Services.AddScoped(); + builder.Services.AddHostedService(); + builder.Services.AddSingleton(); + + // Ensure session keys are stored in a persistent location on all platforms + builder.Services.AddDataProtection() + .PersistKeysToFileSystem(new( + builder.Services.BuildServiceProvider() + .GetRequiredService() + .KeyPath)); + + var app = builder.Build(); + + // Ensure database is created and it's schema is up to date + using var scope = app.Services.CreateScope(); + using var db = scope.ServiceProvider.GetRequiredService(); + db.Database.Migrate(); + + app.UseRouting(); + app.UseSession(); + app.UseAuthentication(); + app.UseAuthorization(); + app.UseHsts(); + app.UseHttpsRedirection(); + app.UseStaticFiles(); + app.UseMiddleware(); + app.MapBlazorHub(); + app.MapControllers(); + app.MapFallbackToPage("/_Host"); + + app.Run(); + } +} -- cgit v1.3