Files
fragalytics/src/Fragalytics.Web/Program.cs
T
2026-04-20 18:15:08 +00:00

45 lines
1.5 KiB
C#

using Fragalytics.Web;
using Fragalytics.Web.Infrastructure;
using Fragalytics.Web.Services;
using Fragalytics.Web.Services.Parser;
using Fragalytics.Web.Services.Render;
using Fragalytics.Web.Services.Scoring;
using Microsoft.Extensions.Options;
var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<FragalyticsOptions>(builder.Configuration.GetSection("Fragalytics"));
builder.Services.AddRazorPages();
builder.Services.AddSingleton<JsonAppStore>();
builder.Services.AddSingleton<ScoringRulesProvider>();
builder.Services.AddSingleton<IRenderWorkerAdapter, NoOpRenderWorkerAdapter>();
builder.Services.AddSingleton<IDemoParserAdapter>(serviceProvider =>
{
var options = serviceProvider.GetRequiredService<IOptions<FragalyticsOptions>>().Value;
return string.Equals(options.Parser.Mode, "external", StringComparison.OrdinalIgnoreCase)
? new ExternalProcessParserAdapter(serviceProvider.GetRequiredService<IOptions<FragalyticsOptions>>())
: new SampleDemoParserAdapter();
});
builder.Services.AddSingleton<MatchScoringService>();
builder.Services.AddSingleton<DemoIngestService>();
builder.Services.AddSingleton<ClipMediaService>();
builder.Services.AddSingleton<QueryService>();
builder.Services.AddHostedService<DemoProcessingWorker>();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseStaticFiles();
app.UseRouting();
app.MapRazorPages();
app.Run();
public partial class Program
{
}