diff --git a/src/GmRelay.Web/Program.cs b/src/GmRelay.Web/Program.cs index a747dd6..81c45e4 100644 --- a/src/GmRelay.Web/Program.cs +++ b/src/GmRelay.Web/Program.cs @@ -23,6 +23,7 @@ builder.AddNpgsqlDataSource("gmrelaydb"); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddScoped(); +builder.Services.AddScoped(); // Add Bot Client builder.Services.AddSingleton(sp => @@ -145,6 +146,24 @@ app.MapPost("/auth/logout", async (HttpContext context) => return Results.Redirect("/"); }); +// Public calendar subscription endpoint (no auth required) +app.MapGet("/calendar/{token}.ics", async ( + string token, + CalendarSubscriptionService service, + CancellationToken ct) => +{ + try + { + var ics = await service.GetIcsAsync(token, ct); + var bytes = System.Text.Encoding.UTF8.GetBytes(ics); + return Results.File(bytes, "text/calendar", "schedule.ics"); + } + catch (SubscriptionNotFoundException) + { + return Results.NotFound(); + } +}); + app.Run(); static ClaimsPrincipal CreateTelegramPrincipal(long telegramId, string name)