Files
RpgRoller/RpgRoller/Program.cs

45 lines
1.5 KiB
C#

using Microsoft.AspNetCore.ResponseCompression;
using RpgRoller.Api;
using RpgRoller.Components;
using RpgRoller.Contracts;
using RpgRoller.Hosting;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRpgRollerCore(builder.Configuration, builder.Environment);
builder.Services.AddRazorComponents().AddInteractiveServerComponents();
builder.Services.AddResponseCompression(options =>
{
options.EnableForHttps = true;
options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(["application/json"]);
});
builder.Services.ConfigureHttpJsonOptions(options => RpgRollerJson.Configure(options.SerializerOptions));
builder.Services.AddHttpContextAccessor();
builder.Services.AddScoped<RpgRollerApiClient>();
builder.Services.AddScoped<WorkspaceSessionTokenAccessor>();
builder.Services.AddScoped<WorkspaceQueryService>();
var app = builder.Build();
app.InitializeRpgRollerState();
var configuredPathBase = builder.Configuration["PathBase"];
if (!string.IsNullOrWhiteSpace(configuredPathBase))
{
var normalizedPathBase = configuredPathBase.Trim();
if (!normalizedPathBase.StartsWith('/'))
normalizedPathBase = $"/{normalizedPathBase}";
normalizedPathBase = normalizedPathBase.TrimEnd('/');
if (normalizedPathBase.Length > 0)
app.UsePathBase(normalizedPathBase);
}
app.UseResponseCompression();
app.UseAntiforgery();
app.MapRpgRollerApi();
app.MapStaticAssets();
app.MapRazorComponents<App>().AddInteractiveServerRenderMode();
app.Run();
public partial class Program;