using Alchegos.Core; using Alchegos.Core.Services.RabbitMQ; GlobalRegistry.Instance.Start(); var builder = WebApplication.CreateBuilder(args); builder.Logging.ClearProviders(); builder.Logging.AddConsole(); builder.Services.Configure( builder.Configuration.GetSection("RabbitMQ") ); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); var app = builder.Build(); var logger = app.Services.GetRequiredService>(); logger.LogInformation("Starting web hook /webhook/gitea"); app.MapPost("/webhook/gitea", async (HttpRequest request, HttpResponse response, IRabbitPublisher publisher) => { logger.LogInformation("Received gitea webhook request"); using var reader = new StreamReader(request.Body); var jsonBody = await reader.ReadToEndAsync(); var giteaEvent = request.Headers["X-Gitea-Event"].ToString() ?? "unknown"; logger.LogInformation($"Received gitea webhook post: {giteaEvent}"); logger.LogInformation($" {jsonBody}"); await publisher.PublishAsync( exchange: "gitea.webhook.exchange", routingKey: giteaEvent, message: jsonBody ); response.StatusCode = 200; await response.WriteAsync(jsonBody); }); app.Run();