diff --git a/src/d2m/converters/lottie.js b/src/d2m/converters/lottie.js index 12a311a..35e9f9c 100644 --- a/src/d2m/converters/lottie.js +++ b/src/d2m/converters/lottie.js @@ -21,7 +21,7 @@ const Rlottie = (async () => { /** * @param {string} text - * @returns {Promise} + * @returns {Promise} */ async function convert(text) { const r = await Rlottie diff --git a/src/m2d/actions/send-event.js b/src/m2d/actions/send-event.js index 66c2728..7e5bd7e 100644 --- a/src/m2d/actions/send-event.js +++ b/src/m2d/actions/send-event.js @@ -37,16 +37,15 @@ async function resolvePendingFiles(message) { if ("key" in p) { // Encrypted file const d = crypto.createDecipheriv("aes-256-ctr", Buffer.from(p.key, "base64url"), Buffer.from(p.iv, "base64url")) - // @ts-ignore - await api.getMedia(p.mxc).then(res => res.body.pipe(d)) + await api.getMedia(p.mxc).then(res => Readable.fromWeb(res.body).pipe(d)) return { name: p.name, file: d } } else { // Unencrypted file - /** @type {Readable} */ // @ts-ignore - const body = await api.getMedia(p.mxc).then(res => res.body) + /** @type {Readable} */ + const body = await api.getMedia(p.mxc).then(res => Readable.fromWeb(res.body)) return { name: p.name, file: body diff --git a/src/matrix/api.js b/src/matrix/api.js index cea4307..1c2be29 100644 --- a/src/matrix/api.js +++ b/src/matrix/api.js @@ -343,16 +343,20 @@ async function ping() { /** * @param {string} mxc * @param {RequestInit} [init] + * @return {Promise}>} */ -function getMedia(mxc, init = {}) { +async function getMedia(mxc, init = {}) { const mediaParts = mxc?.match(/^mxc:\/\/([^/]+)\/(\w+)$/) assert(mediaParts) - return fetch(`${mreq.baseUrl}/client/v1/media/download/${mediaParts[1]}/${mediaParts[2]}`, { + const res = await fetch(`${mreq.baseUrl}/client/v1/media/download/${mediaParts[1]}/${mediaParts[2]}`, { headers: { Authorization: `Bearer ${reg.as_token}` }, ...init }) + assert(res.body) + // @ts-ignore + return res } /**