@rexxhayanasi/elaina-bail
Version:
Custom Baileys WhatsApp API
30 lines (25 loc) • 875 B
JavaScript
const { Buffer } = require("buffer")
const fs = require("fs/promises")
const { Readable } = require("stream")
const streamToBuffer = require("./streamToBuffer")
/**
* Mengonversi berbagai input audio (Buffer, URL, path file, atau Readable stream) menjadi Buffer.
* @param {Buffer|string|Readable} audio Input audio.
* @returns {Promise<Buffer>} Buffer hasil konversi.
*/
async function audioToBuffer(audio) {
if (Buffer.isBuffer(audio)) {
return audio
}
if (typeof audio === "string") {
if (/^https?:\/\//.test(audio)) {
const res = await fetch(audio) // native fetch bawaan Node 20
return Buffer.from(await res.arrayBuffer())
}
return fs.readFile(audio)
}
if (audio instanceof Readable) {
return streamToBuffer(audio)
}
throw new TypeError("Unsupported audio input type")
}