67 lines
2.2 KiB
C#
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();
|