cray
Version:
Epub parser
65 lines (51 loc) • 1.5 kB
JavaScript
/**
* @author: Akshay Singh
* @date: 12/10/2015
* @company: Matter Inc
*/
var ZipStream = require('node-stream-zip');
var streamBuffers = require('stream-buffers');
var fs = require('fs-extra');
var path = require('path');
var Streamer = function(streamPath, cb) {
var streamer = this;
streamer.path = streamPath;
var callback = cb || function() {};
fs.lstat(streamer.path, function(err, stat) {
streamer.isFile = stat.isFile();
if (streamer.isFile) {
streamer.fileStream = new ZipStream({
file: streamer.path,
storeEntries: true
});
streamer.fileStream.on('error', function(err) {
callback(err);
});
streamer.fileStream.on('ready', function() {
callback(null)
});
} else {
callback(null);
}
});
};
Streamer.prototype.fetchFileString = function(name, cb) {
var callback = cb || function() {};
if (this.isFile) {
this.fileStream.stream(name, function(err, stream) {
if (err) {
return callback(err);
}
var file = new streamBuffers.WritableStreamBuffer();
stream.pipe(file).on('finish', function() {
callback(null, file.getContentsAsString());
});
});
} else {
fs.readFile(path.resolve(this.path, name), 'utf8', function(err, fileString) {
if (err) {return callback(err);}
callback(null, fileString);
});
}
};
module.exports = Streamer;