/** * Copy file via streams * @param {string} src - Path to the source file * @param {string} dst - Path to the destination file. */ const copyFile = (src, dst, callback) => { // cbCalled flag and runCb helps to run cb only once. let cbCalled = false; let runCb = (err) => { if (cbCalled) return; cbCalled = true; callback(err); }; // Create read stream let readable = fs.createReadStream(src); readable.on('error', runCb); // Create write stream let writable = fs.createWriteStream(dst); writable.on('error', (err)=>{ readable.destroy(); runCb(err); }); writable.on('close', () => runCb()); // Copy file via piping streams. readable.pipe(writable); }
stop() { this.reader.pause(); this.reader.close(); this.reader.destroy(); }
const uploadToObjectStorage = ( filePath: string, channelId: string, name: string, isFile: boolean, ): Promise<string> => new Promise((resolve, reject) => { const readStream = createReadStream(filePath); const params = { Bucket: process.env.NCS_BUCKET, Key: `${channelId}/${isFile ? 'files' : 'slides'}/${name}`, ACL: 'public-read', Body: readStream, CacheControl: 'public, max-age=864000', }; s3.upload(params, (err: any, data) => { readStream.destroy(); if (err) reject(err); else resolve(data.Location); }); })
let rejectCleanup = ( e ) => { err = true; read.destroy(); write.end(); reject( e );
let rejectCleanup = ( e ) => { err = true; read.destroy(); write.end(); reject( e );