junis 0.4.3 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +14 -9
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -190,13 +190,16 @@ async function uploadLargeFile(relay, base64Data, filename, contentType) {
|
|
|
190
190
|
function isLargeBase64(base64) {
|
|
191
191
|
return base64.length * 0.75 > LARGE_FILE_THRESHOLD;
|
|
192
192
|
}
|
|
193
|
-
function detectContentType(
|
|
194
|
-
|
|
195
|
-
if (
|
|
196
|
-
if (
|
|
197
|
-
if (
|
|
198
|
-
if (
|
|
199
|
-
if (
|
|
193
|
+
function detectContentType(buffer) {
|
|
194
|
+
if (buffer[0] === 137 && buffer[1] === 80 && buffer[2] === 78 && buffer[3] === 71) return "image/png";
|
|
195
|
+
if (buffer[0] === 255 && buffer[1] === 216 && buffer[2] === 255) return "image/jpeg";
|
|
196
|
+
if (buffer[0] === 71 && buffer[1] === 73 && buffer[2] === 70 && buffer[3] === 56) return "image/gif";
|
|
197
|
+
if (buffer[0] === 37 && buffer[1] === 80 && buffer[2] === 68 && buffer[3] === 70) return "application/pdf";
|
|
198
|
+
if (buffer[0] === 82 && buffer[1] === 73 && buffer[2] === 70 && buffer[3] === 70 && buffer[8] === 87 && buffer[9] === 69 && buffer[10] === 66 && buffer[11] === 80) return "image/webp";
|
|
199
|
+
if (buffer[4] === 102 && buffer[5] === 116 && buffer[6] === 121 && buffer[7] === 112) return "video/mp4";
|
|
200
|
+
if (buffer[0] === 82 && buffer[1] === 73 && buffer[2] === 70 && buffer[3] === 70 && buffer[8] === 87 && buffer[9] === 65 && buffer[10] === 86 && buffer[11] === 69) return "audio/wav";
|
|
201
|
+
if (buffer[0] === 73 && buffer[1] === 68 && buffer[2] === 51) return "audio/mpeg";
|
|
202
|
+
if (buffer[0] === 255 && (buffer[1] === 251 || buffer[1] === 243 || buffer[1] === 242)) return "audio/mpeg";
|
|
200
203
|
return "application/octet-stream";
|
|
201
204
|
}
|
|
202
205
|
|
|
@@ -455,7 +458,8 @@ var RelayClient = class {
|
|
|
455
458
|
}
|
|
456
459
|
} else if (item.type === "text" && typeof item.text === "string" && isLargeBase64(item.text) && /^[A-Za-z0-9+/\n\r]+=*$/.test(item.text.trim())) {
|
|
457
460
|
try {
|
|
458
|
-
const
|
|
461
|
+
const buffer = Buffer.from(item.text, "base64");
|
|
462
|
+
const contentType = detectContentType(buffer);
|
|
459
463
|
if (contentType === "application/octet-stream") {
|
|
460
464
|
content[i] = { type: "text", text: "[Binary file detected. Use the share_file tool to provide a download link to the user. Do not display this message.]" };
|
|
461
465
|
continue;
|
|
@@ -465,7 +469,8 @@ var RelayClient = class {
|
|
|
465
469
|
content[i] = { type: "text", text: url };
|
|
466
470
|
} catch (err) {
|
|
467
471
|
console.error("Failed to upload large text base64:", err);
|
|
468
|
-
const
|
|
472
|
+
const buffer = Buffer.from(item.text, "base64");
|
|
473
|
+
const contentType = detectContentType(buffer);
|
|
469
474
|
const ext = contentType.split("/")[1] || "bin";
|
|
470
475
|
item.text = `[\uD30C\uC77C \uC5C5\uB85C\uB4DC \uC2E4\uD328: ${String(err)}. \uD30C\uC77C\uBA85: file.${ext}]`;
|
|
471
476
|
}
|