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

67 lines
2.2 KiB
C#

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