mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-10 10:50:43 +00:00
43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import type { FeishuConfig } from "./types.js";
|
|
|
|
/** Default HTTP timeout for Feishu API requests (30 seconds). */
|
|
export const FEISHU_HTTP_TIMEOUT_MS = 30_000;
|
|
export const FEISHU_HTTP_TIMEOUT_MAX_MS = 300_000;
|
|
export const FEISHU_HTTP_TIMEOUT_ENV_VAR = "OPENCLAW_FEISHU_HTTP_TIMEOUT_MS";
|
|
|
|
export type FeishuClientTimeoutConfig = {
|
|
httpTimeoutMs?: number;
|
|
config?: Pick<FeishuConfig, "httpTimeoutMs">;
|
|
};
|
|
|
|
export function resolveConfiguredHttpTimeoutMs(creds: FeishuClientTimeoutConfig): number {
|
|
const clampTimeout = (value: number): number => {
|
|
const rounded = Math.floor(value);
|
|
return Math.min(Math.max(rounded, 1), FEISHU_HTTP_TIMEOUT_MAX_MS);
|
|
};
|
|
|
|
const fromDirectField = creds.httpTimeoutMs;
|
|
if (
|
|
typeof fromDirectField === "number" &&
|
|
Number.isFinite(fromDirectField) &&
|
|
fromDirectField > 0
|
|
) {
|
|
return clampTimeout(fromDirectField);
|
|
}
|
|
|
|
const envRaw = process.env[FEISHU_HTTP_TIMEOUT_ENV_VAR];
|
|
if (envRaw) {
|
|
const envValue = Number(envRaw);
|
|
if (Number.isFinite(envValue) && envValue > 0) {
|
|
return clampTimeout(envValue);
|
|
}
|
|
}
|
|
|
|
const fromConfig = creds.config?.httpTimeoutMs;
|
|
const timeout = fromConfig;
|
|
if (typeof timeout !== "number" || !Number.isFinite(timeout) || timeout <= 0) {
|
|
return FEISHU_HTTP_TIMEOUT_MS;
|
|
}
|
|
return clampTimeout(timeout);
|
|
}
|