49 lines
1.3 KiB
C#
49 lines
1.3 KiB
C#
using Microsoft.AspNetCore.Http.Features;
|
|
using WeShare.Components;
|
|
using WeShare.Endpoints;
|
|
using WeShare.Models;
|
|
using WeShare.Services;
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
// Configure options
|
|
builder.Services.Configure<WeShareOptions>(builder.Configuration.GetSection(WeShareOptions.SectionName));
|
|
|
|
// Configure Large File form options for chunk transfer
|
|
builder.Services.Configure<FormOptions>(options =>
|
|
{
|
|
options.MultipartBodyLengthLimit = 50 * 1024 * 1024; // 50MB per chunk form request
|
|
});
|
|
|
|
// Register services
|
|
builder.Services.AddSingleton<IPasswordHasher, PasswordHasher>();
|
|
builder.Services.AddSingleton<IShareStorageService, ShareStorageService>();
|
|
builder.Services.AddHostedService<CleanupBackgroundService>();
|
|
|
|
// Add Blazor InteractiveServer
|
|
builder.Services.AddRazorComponents()
|
|
.AddInteractiveServerComponents();
|
|
|
|
var app = builder.Build();
|
|
|
|
// Configure the HTTP request pipeline.
|
|
if (!app.Environment.IsDevelopment())
|
|
{
|
|
app.UseExceptionHandler("/Error", createScopeForErrors: true);
|
|
app.UseHsts();
|
|
}
|
|
|
|
app.UseHttpsRedirection();
|
|
app.UseAntiforgery();
|
|
app.UseStaticFiles();
|
|
|
|
// Map Minimal API Endpoints
|
|
app.MapUploadEndpoints();
|
|
app.MapDownloadEndpoints();
|
|
|
|
// Map Blazor Components
|
|
app.MapRazorComponents<App>()
|
|
.AddInteractiveServerRenderMode();
|
|
|
|
app.Run();
|