Files
openclaw/extensions/nextcloud-talk/src/api-credentials.ts
2026-06-04 21:33:54 -04:00

33 lines
956 B
TypeScript

// Nextcloud Talk plugin module implements api credentials behavior.
import { readFileSync } from "node:fs";
import { normalizeResolvedSecretInputString } from "./secret-input.js";
export function resolveNextcloudTalkApiCredentials(params: {
apiUser?: string;
apiPassword?: unknown;
apiPasswordFile?: string;
}): { apiUser: string; apiPassword: string } | undefined {
const apiUser = params.apiUser?.trim();
if (!apiUser) {
return undefined;
}
const inlinePassword = normalizeResolvedSecretInputString({
value: params.apiPassword,
path: "channels.nextcloud-talk.apiPassword",
});
if (inlinePassword) {
return { apiUser, apiPassword: inlinePassword };
}
if (!params.apiPasswordFile) {
return undefined;
}
try {
const filePassword = readFileSync(params.apiPasswordFile, "utf-8").trim();
return filePassword ? { apiUser, apiPassword: filePassword } : undefined;
} catch {
return undefined;
}
}