Add method readAsStream on fs model

This commit is contained in:
Samy Pesse
2016-05-06 10:53:55 +02:00
parent 11a0a64d9e
commit cf7e5884cd
3 changed files with 31 additions and 2 deletions
+2 -1
View File
@@ -36,6 +36,7 @@ module.exports = function createNodeFS(root) {
fsReadFile: fs.readFile,
fsStatFile: fs.stat,
fsReadDir: fsReadDir,
fsLoadObject: fsLoadObject
fsLoadObject: fsLoadObject,
fsReadAsStream: fs.readStream
});
};
+28 -1
View File
@@ -1,5 +1,6 @@
var path = require('path');
var Immutable = require('immutable');
var stream = require('stream');
var File = require('./file');
var Promise = require('../utils/promise');
@@ -13,7 +14,9 @@ var FS = Immutable.Record({
fsReadFile: Function(),
fsStatFile: Function(),
fsReadDir: Function(),
fsLoadObject: null
fsLoadObject: null,
fsReadAsStream: null
});
/**
@@ -111,6 +114,30 @@ FS.prototype.readAsString = function(filename, encoding) {
});
};
/**
Read file as a stream
@param {String} filename
@return {Promise<Stream>}
*/
FS.prototype.readAsStream = function(filename) {
var that = this;
var filepath = that.resolve(filename);
var fsReadAsStream = this.get('fsReadAsStream');
if (fsReadAsStream) {
return Promise(fsReadAsStream(filepath));
}
return this.read(filename)
.then(function(buf) {
var bufferStream = new stream.PassThrough();
bufferStream.end(buf);
return bufferStream;
});
};
/**
Read stat infos about a file
+1
View File
@@ -157,6 +157,7 @@ module.exports = {
statSync: fs.statSync,
readdir: Promise.nfbind(fs.readdir),
writeStream: writeStream,
readStream: fs.createReadStream,
copy: Promise.nfbind(cp),
copyDir: Promise.nfbind(cpr),
tmpFile: genTmpFile,