using MetaApi.Configuration; using MetaApi.Services; var builder = WebApplication.CreateBuilder(args); // Port binding (same pattern as GoogleApi) var port = Environment.GetEnvironmentVariable("PORT") ?? "5300"; builder.WebHost.UseUrls($"http://0.0.0.0:{port}"); // Configuration builder.Services.Configure(options => { // Bind from appsettings Meta section builder.Configuration.GetSection("Meta").Bind(options); // Environment variable overrides (Azure Container Apps pattern) options.AppId = Environment.GetEnvironmentVariable("Meta__AppId") ?? options.AppId; options.AppSecret = Environment.GetEnvironmentVariable("Meta__AppSecret") ?? options.AppSecret; options.SystemUserToken = Environment.GetEnvironmentVariable("Meta__SystemUserToken") ?? options.SystemUserToken; options.BusinessManagerId = Environment.GetEnvironmentVariable("Meta__BusinessManagerId") ?? options.BusinessManagerId; options.ApiVersion = Environment.GetEnvironmentVariable("Meta__ApiVersion") ?? options.ApiVersion; var enableReal = Environment.GetEnvironmentVariable("Meta__EnableRealApi"); if (bool.TryParse(enableReal, out var realApi)) options.EnableRealApi = realApi; }); // HTTP client for Graph API builder.Services.AddHttpClient(client => { client.DefaultRequestHeaders.Add("Accept", "application/json"); client.Timeout = TimeSpan.FromSeconds(30); }); // Services builder.Services.AddScoped(); builder.Services.AddScoped(); // Controllers + Swagger builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new() { Title = "MetaApi", Version = "v1" }); }); var app = builder.Build(); // Swagger (all environments - same as GoogleApi) app.UseSwagger(); app.UseSwaggerUI(); app.MapControllers(); app.MapGet("/", () => Results.Ok(new { service = "MetaApi", status = "running", version = "1.0.0", timestamp = DateTimeOffset.UtcNow })); app.Logger.LogInformation("MetaApi starting on port {Port}", port); app.Run();