UNPKG

cray

Version:
65 lines (51 loc) 1.5 kB
/** * @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;