Iceshrimp.NET/Iceshrimp.Backend/Startup.cs
2023-12-24 00:57:07 +01:00

41 lines
No EOL
1.3 KiB
C#

using Asp.Versioning;
using Vite.AspNetCore.Extensions;
//TODO: Add proper logger
Console.WriteLine("-- Iceshrimp.NET (alpha) --");
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers().AddNewtonsoftJson();
builder.Services.AddApiVersioning(options => {
options.DefaultApiVersion = new ApiVersion(1);
options.ReportApiVersions = true;
options.UnsupportedApiVersionStatusCode = 501;
});
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddRazorPages();
builder.Services.AddViteServices(options => {
options.PackageDirectory = "../Iceshrimp.Frontend";
options.PackageManager = "yarn";
options.Server.AutoRun = false; //TODO: Fix script generation on macOS
options.Server.UseFullDevUrl = true;
options.Base = "frontend"; // relative to wwwroot
});
//TODO: load built assets in production
var app = builder.Build();
app.UseSwagger();
app.UseSwaggerUI(options => { options.DocumentTitle = "Iceshrimp API documentation"; });
app.UseStaticFiles();
app.UseAuthorization();
app.MapControllers();
app.MapFallbackToController("/api/{**slug}", "FallbackAction", "Fallback");
app.MapRazorPages();
app.MapFallbackToPage("/Shared/FrontendSPA");
if (app.Environment.IsDevelopment()) app.UseViteDevMiddleware();
app.Run();