import "server-only"; import { optionalEnvironmentValue, readFeatureEnvironment, requiredEnvironmentUrl, } from "@/lib/config/environment"; export function getCanonicalUrl() { if (optionalEnvironmentValue("BASE_URL")) { return requiredEnvironmentUrl("BASE_URL"); } return requiredEnvironmentUrl("NEXTAUTH_URL"); } export function getDiscordServerConfig() { const config = readFeatureEnvironment("Discord", [ "DISCORD_BOT_TOKEN", "DISCORD_GUILD_ID", ] as const); return { token: config.DISCORD_BOT_TOKEN, guildId: config.DISCORD_GUILD_ID, }; } export function getYoutubeFollowerConfig() { const config = readFeatureEnvironment("YouTube follower counts", [ "YOUTUBE_API_KEY", "YOUTUBE_CHANNEL_ID", ] as const); return { apiKey: config.YOUTUBE_API_KEY, channelId: config.YOUTUBE_CHANNEL_ID }; } export function getRobloxFollowerConfig() { return { userId: readFeatureEnvironment("Roblox follower counts", [ "ROBLOX_USER_ID", ] as const).ROBLOX_USER_ID, }; } export function getTiktokApiConfig() { const accessToken = optionalEnvironmentValue("TIKTOK_ACCESS_TOKEN"); if (accessToken) { return { clientKey: null, clientSecret: null, refreshToken: null, accessToken, }; } const config = readFeatureEnvironment("TikTok", [ "TIKTOK_CLIENT_KEY", "TIKTOK_CLIENT_SECRET", "TIKTOK_REFRESH_TOKEN", ] as const); return { clientKey: config.TIKTOK_CLIENT_KEY, clientSecret: config.TIKTOK_CLIENT_SECRET, refreshToken: config.TIKTOK_REFRESH_TOKEN, accessToken: null, }; } export function getYoutubePublishingConfig() { const config = readFeatureEnvironment("YouTube publishing", [ "YOUTUBE_CLIENT_ID", "YOUTUBE_CLIENT_SECRET", "YOUTUBE_REFRESH_TOKEN", ] as const); return { clientId: config.YOUTUBE_CLIENT_ID, clientSecret: config.YOUTUBE_CLIENT_SECRET, refreshToken: config.YOUTUBE_REFRESH_TOKEN, }; }