UNPKG

cod-dicomweb-server

Version:

A wadors server proxy that get data from a Cloud Optimized Dicom format.

31 lines (30 loc) 1.26 kB
import { CustomError } from '../../classes/customClasses'; import { readFile, writeFile, createPartialFileName } from '../../fileAccessSystemUtils'; const filePartial = { async partial(args, callBack) { const { url, offsets, headers, directoryHandle } = args; if (offsets?.startByte && offsets?.endByte) { headers['Range'] = `bytes=${offsets.startByte}-${offsets.endByte - 1}`; } const storageName = createPartialFileName(url, offsets); if (directoryHandle) { const file = await readFile(directoryHandle, storageName, offsets); if (file) { callBack({ url, fileArraybuffer: new Uint8Array(file), offsets }); return; } } await fetch(url, { headers }) .then((response) => response.arrayBuffer()) .then((data) => { callBack({ url, fileArraybuffer: new Uint8Array(data), offsets }); if (directoryHandle) { writeFile(directoryHandle, storageName, data); } }) .catch((error) => { throw new CustomError('filePartial.ts: Error when fetching file: ' + error?.message); }); } }; export default filePartial;