UNPKG

cod-dicomweb-server

Version:

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

34 lines (33 loc) 1.43 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, isJson: false })); if (file?.byteLength) { const fileBuffer = new Uint8Array(file); callBack({ url, fileArraybuffer: fileBuffer, offsets }); return fileBuffer; } } return await fetch(url, { headers }) .then((response) => response.arrayBuffer()) .then((data) => { const fileBuffer = new Uint8Array(data); callBack({ url, fileArraybuffer: fileBuffer, offsets }); if (directoryHandle) { writeFile(directoryHandle, storageName, data); } return fileBuffer; }) .catch((error) => { throw new CustomError('filePartial.ts: Error when fetching file: ' + error?.message); }); } }; export default filePartial;