ModReleaser/src/lib/utils/fetch.ts

28 lines
875 B
TypeScript

/**
* 读取错误响应体文本(最多 4096 字符),用于拼入错误信息。
* 若读取失败则返回兜底字符串。
*/
export async function readErrorBody(res: Response): Promise<string> {
try {
const text = await res.text();
return text.slice(0, 4096);
} catch {
return "(unable to read response body)";
}
}
/** 将 FormData 内容转为可读摘要字符串,用于拼入错误信息。 */
export function summarizeFormData(form: FormData): string {
const parts: string[] = [];
for (const [key, value] of form.entries()) {
if (typeof value === "string") {
parts.push(`${key}: ${value.slice(0, 2048)}`);
} else {
parts.push(
`${key}: <File name="${value.name.slice(0, 256)}" size=${value.size} type="${value.type}">`,
);
}
}
return parts.length > 0 ? parts.join("\n") : "(empty body)";
}