chore(config): centralize feature settings
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
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,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user