Files
erika/lib/config/server.ts
T

83 lines
2.0 KiB
TypeScript

import "server-only";
import {
optionalEnvironmentValue,
readFeatureEnvironment,
requiredEnvironmentValue,
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 getShareBotSecret() {
return requiredEnvironmentValue("SHARE_BOT_SECRET");
}
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,
};
}