hostr/lib/hostr-file-stream.js

37 lines
986 B
JavaScript
Raw Normal View History

2015-07-09 23:01:43 +01:00
import fs from 'fs';
import createError from 'http-errors';
2016-05-25 21:03:07 +01:00
import { get as getFile } from './sftp';
2015-07-09 23:01:43 +01:00
import debugname from 'debug';
const debug = debugname('hostr:file-stream');
export default function* hostrFileStream(localPath, remotePath) {
const localRead = fs.createReadStream(localPath);
return new Promise((resolve, reject) => {
localRead.once('error', () => {
debug('local error');
2016-05-25 21:03:07 +01:00
const remoteFile = getFile(remotePath);
2015-07-09 23:01:43 +01:00
2016-05-25 21:03:07 +01:00
remoteFile.then((remoteRead) => {
2015-07-09 23:01:43 +01:00
const localWrite = fs.createWriteStream(localPath);
localWrite.once('finish', () => {
debug('local write end');
resolve(fs.createReadStream(localPath));
});
remoteRead.pipe(localWrite);
2016-05-25 21:03:07 +01:00
remoteRead.once('error', () => {
debug('remote error');
reject(createError(404));
});
2015-07-09 23:01:43 +01:00
});
2016-05-25 21:03:07 +01:00
2015-07-09 23:01:43 +01:00
});
localRead.once('readable', () => {
debug('local readable');
resolve(localRead);
});
});
}