Files
AdPlatform-Server/MetaApi/Program.cs
2026-03-14 13:50:09 -07:00

66 lines
2.1 KiB
C#

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<MetaConfig>(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<MetaGraphClient>(client =>
{
client.DefaultRequestHeaders.Add("Accept", "application/json");
client.Timeout = TimeSpan.FromSeconds(30);
});
// Services
builder.Services.AddScoped<MetaMarketingService>();
builder.Services.AddScoped<MetaApi.Security.InternalAuthFilter>();
// 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();