using TikTokApi.Configuration; using TikTokApi.Services; var builder = WebApplication.CreateBuilder(args); // Port binding (same pattern as GoogleApi/MetaApi) var port = Environment.GetEnvironmentVariable("PORT") ?? "5400"; builder.WebHost.UseUrls($"http://0.0.0.0:{port}"); // Configuration builder.Services.Configure(options => { // Bind from appsettings TikTok section builder.Configuration.GetSection("TikTok").Bind(options); // Environment variable overrides (Azure Container Apps pattern) options.AppId = Environment.GetEnvironmentVariable("TikTok__AppId") ?? options.AppId; options.AppSecret = Environment.GetEnvironmentVariable("TikTok__AppSecret") ?? options.AppSecret; options.AccessToken = Environment.GetEnvironmentVariable("TikTok__AccessToken") ?? options.AccessToken; options.BusinessCenterId = Environment.GetEnvironmentVariable("TikTok__BusinessCenterId") ?? options.BusinessCenterId; options.ApiVersion = Environment.GetEnvironmentVariable("TikTok__ApiVersion") ?? options.ApiVersion; options.ApiBaseUrl = Environment.GetEnvironmentVariable("TikTok__ApiBaseUrl") ?? options.ApiBaseUrl; var enableReal = Environment.GetEnvironmentVariable("TikTok__EnableRealApi"); if (bool.TryParse(enableReal, out var realApi)) options.EnableRealApi = realApi; }); // HTTP client for TikTok Marketing 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 = "TikTokApi", Version = "v1" }); }); var app = builder.Build(); // Swagger (all environments - same as GoogleApi/MetaApi) app.UseSwagger(); app.UseSwaggerUI(); app.MapControllers(); app.MapGet("/", () => Results.Ok(new { service = "TikTokApi", status = "running", version = "1.0.0", timestamp = DateTimeOffset.UtcNow })); app.Logger.LogInformation("TikTokApi starting on port {Port}", port); app.Run();