robert-util
Version:
Utilities for robert and robert-server packages
36 lines (35 loc) • 1.24 kB
JavaScript
export async function toBuffers(res, maxSize) {
return new Promise((resolve, reject) => {
let buffers = [];
let size = 0;
res.on("data", data => {
size += Buffer.byteLength(data);
if (size > maxSize)
reject(new Error("Body over maximum size: " + size));
else
buffers.push(data);
});
res.on("error", error => reject(error));
res.on("end", () => resolve(buffers));
});
}
export async function toBuffer(res, maxSize) {
const buffers = await toBuffers(res, maxSize);
return Buffer.concat(buffers);
}
export async function toArrayBuffer(res, maxSize) {
const buffer = await toBuffer(res, maxSize);
return buffer.slice(buffer.byteLength, buffer.byteOffset + buffer.byteLength);
}
export async function toBlob(res, maxSize) {
const buffers = await toBuffers(res, maxSize);
return new Blob(buffers, { type: res.headers["content-type"] });
}
export async function toString(res, maxSize) {
const buffer = await toBuffer(res, maxSize);
return buffer.toString();
}
export async function toJSON(res, maxSize) {
const string = await toString(res, maxSize);
return JSON.parse(string);
}