86 lines
2.7 KiB
TypeScript
86 lines
2.7 KiB
TypeScript
/**
|
|
* SDK 统一配置 - 从环境变量读取,可随时调用
|
|
* 复制自 digital 项目,去除主题依赖
|
|
*/
|
|
|
|
const isDev = process.env.NODE_ENV === "development";
|
|
|
|
export interface PocketBaseConfig {
|
|
enabled: boolean;
|
|
url: string;
|
|
usersCollection: string;
|
|
joinCollection: string;
|
|
}
|
|
|
|
export interface ZPayConfig {
|
|
enabled: boolean;
|
|
apiUrl: string;
|
|
provider: "zpay" | "xorpay";
|
|
defaultAmount: number;
|
|
defaultType: string;
|
|
zpaySubmitUrl: string;
|
|
}
|
|
|
|
export interface MinioConfig {
|
|
enabled: boolean;
|
|
endPoint: string;
|
|
port: number;
|
|
useSSL: boolean;
|
|
bucket: string;
|
|
accessKey: string;
|
|
secretKey: string;
|
|
region: string;
|
|
publicUrl: string;
|
|
uploadPrefix: string;
|
|
}
|
|
|
|
/** PocketBase 配置 */
|
|
export function getPocketBaseConfig(overrides?: { joinCollection?: string }): PocketBaseConfig {
|
|
return {
|
|
enabled: true,
|
|
url: process.env.NEXT_PUBLIC_POCKETBASE_URL || process.env.POCKETBASE_URL || "https://pocketbase.hackrobot.cn",
|
|
usersCollection: "users",
|
|
joinCollection: overrides?.joinCollection || process.env.POCKETBASE_JOIN_COLLECTION || "solan",
|
|
};
|
|
}
|
|
|
|
/** ZPay 支付配置 */
|
|
export function getZPayConfig(overrides?: { amount?: number; type?: string }): ZPayConfig {
|
|
const base = {
|
|
enabled: true,
|
|
apiUrl: process.env.PAYMENT_API_URL || (isDev ? "http://127.0.0.1:8700" : "https://api.hackrobot.cn"),
|
|
provider: (process.env.PAYMENT_PROVIDER as "zpay" | "xorpay") || "zpay",
|
|
defaultAmount: Number(process.env.PAYMENT_DEFAULT_AMOUNT) || 80,
|
|
defaultType: process.env.PAYMENT_DEFAULT_TYPE || "meetup",
|
|
zpaySubmitUrl: process.env.ZPAY_SUBMIT_URL || "https://zpayz.cn/submit.php",
|
|
};
|
|
if (overrides) {
|
|
if (overrides.amount != null) base.defaultAmount = overrides.amount;
|
|
if (overrides.type) base.defaultType = overrides.type;
|
|
}
|
|
return base;
|
|
}
|
|
|
|
/** MinIO 配置 */
|
|
export function getMinioConfig(overrides?: { bucket?: string; uploadPrefix?: string }): MinioConfig {
|
|
const endPoint = process.env.MINIO_ENDPOINT || "minioweb.hackrobot.cn";
|
|
const port = parseInt(process.env.MINIO_PORT || "9035", 10);
|
|
const useSSL = process.env.MINIO_USE_SSL === "true";
|
|
const bucket = overrides?.bucket || process.env.MINIO_BUCKET || "hackrobot";
|
|
const publicUrl = process.env.MINIO_PUBLIC_URL || `https://${endPoint}/${bucket}`;
|
|
const uploadPrefix = overrides?.uploadPrefix || process.env.MINIO_UPLOAD_PREFIX || "joins";
|
|
|
|
return {
|
|
enabled: true,
|
|
endPoint,
|
|
port,
|
|
useSSL,
|
|
bucket,
|
|
accessKey: process.env.MINIO_ACCESS_KEY || "6i56HHfg4zPfYItCZtnp",
|
|
secretKey: process.env.MINIO_SECRET_KEY || "vDJCqEit3ejH5UmWKAZnvqhziNfbVsoOlBW12G8Q",
|
|
region: process.env.MINIO_REGION || "china",
|
|
publicUrl: publicUrl.replace(/\/$/, ""),
|
|
uploadPrefix,
|
|
};
|
|
}
|