anki/ts/lib/postrequest.ts

27 lines
794 B
TypeScript

// Copyright: Ankitects Pty Ltd and contributors
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
export async function postRequest(
path: string,
body: string | Uint8Array,
headers: Record<string, string> = {},
): Promise<Uint8Array> {
if (body instanceof Uint8Array) {
headers["Content-type"] = "application/octet-stream";
}
const resp = await fetch(path, {
method: "POST",
headers,
body,
});
if (!resp.ok) {
const body = await resp.text();
throw Error(`${resp.status}: ${body}`);
}
// get returned bytes
const respBlob = await resp.blob();
const respBuf = await new Response(respBlob).arrayBuffer();
const bytes = new Uint8Array(respBuf);
return bytes;
}