49 lines
2.2 KiB
C#
49 lines
2.2 KiB
C#
using TinfoilVibeServer.Authentication;
|
||
using TinfoilVibeServer.Middleware;
|
||
using TinfoilVibeServer.Services;
|
||
using TinfoilVibeServer.Models;
|
||
|
||
var builder = WebApplication.CreateBuilder(args);
|
||
|
||
// -------------------------------------------------------------------
|
||
// 1) Configuration – read appsettings.json once and expose it via
|
||
// ConfigManager (reloads on file change)
|
||
// -------------------------------------------------------------------
|
||
builder.Services.AddMemoryCache();
|
||
builder.Services.Configure<TitleDbOptions>(builder.Configuration.GetSection("TitleDb"));
|
||
builder.Services.AddSingleton<ConfigManager>();
|
||
builder.Services.AddSingleton<NSPExtractor>(sp =>
|
||
{
|
||
var config = sp.GetRequiredService<ConfigManager>();
|
||
var keySet = KeySetHolder.KeySet; // already loaded by ConfigManager
|
||
return new NSPExtractor(keySet);
|
||
});
|
||
builder.Services.AddSingleton<ISnapshotService, SnapshotService>();
|
||
builder.Services.AddSingleton<AuthStore>();
|
||
builder.Services.AddSingleton<TitleDatabaseService>();
|
||
builder.Services.AddSingleton<ArchiveHandler>();
|
||
builder.Services.AddSingleton<IndexBuilderService>();
|
||
builder.Services.AddHostedService<TitleDatabaseService>(provider => provider.GetRequiredService<TitleDatabaseService>()).AddHttpClient();
|
||
builder.Services.AddHostedService<IndexBuilderService>(provider => provider.GetRequiredService<IndexBuilderService>());
|
||
builder.Services.AddControllers(); // add MVC
|
||
// -------------------------------------------------------------------
|
||
// 2) Middleware – Basic‑Auth (verifies username, password, UID, blacklist)
|
||
// -------------------------------------------------------------------
|
||
|
||
var app = builder.Build();
|
||
|
||
app.UseMiddleware<BasicAuthMiddleware>();
|
||
app.MapControllers(); // routes the /index.json & /download endpoints
|
||
|
||
// -------------------------------------------------------------------
|
||
// 3) End‑points
|
||
// -------------------------------------------------------------------
|
||
|
||
|
||
app.MapGet("/debug", () => new SnapshotService(
|
||
app.Services.GetRequiredService<ConfigManager>(),
|
||
app.Services.GetRequiredService<NSPExtractor>(),
|
||
app.Services.GetRequiredService<ArchiveHandler>())
|
||
.GetSnapshot());
|
||
|
||
app.Run(); |