Spaces:
Runtime error
Runtime error
| if (global.GENTLY) require = GENTLY.hijack(require); | |
| var util = require('util'), | |
| fs = require('fs'), | |
| EventEmitter = require('events').EventEmitter, | |
| crypto = require('crypto'); | |
| function File(properties) { | |
| EventEmitter.call(this); | |
| this.size = 0; | |
| this.path = null; | |
| this.name = null; | |
| this.type = null; | |
| this.hash = null; | |
| this.lastModifiedDate = null; | |
| this._writeStream = null; | |
| for (var key in properties) { | |
| this[key] = properties[key]; | |
| } | |
| if(typeof this.hash === 'string') { | |
| this.hash = crypto.createHash(properties.hash); | |
| } else { | |
| this.hash = null; | |
| } | |
| } | |
| module.exports = File; | |
| util.inherits(File, EventEmitter); | |
| File.prototype.open = function() { | |
| this._writeStream = new fs.WriteStream(this.path); | |
| }; | |
| File.prototype.toJSON = function() { | |
| var json = { | |
| size: this.size, | |
| path: this.path, | |
| name: this.name, | |
| type: this.type, | |
| mtime: this.lastModifiedDate, | |
| length: this.length, | |
| filename: this.filename, | |
| mime: this.mime | |
| }; | |
| if (this.hash && this.hash != "") { | |
| json.hash = this.hash; | |
| } | |
| return json; | |
| }; | |
| File.prototype.write = function(buffer, cb) { | |
| var self = this; | |
| if (self.hash) { | |
| self.hash.update(buffer); | |
| } | |
| if (this._writeStream.closed) { | |
| return cb(); | |
| } | |
| this._writeStream.write(buffer, function() { | |
| self.lastModifiedDate = new Date(); | |
| self.size += buffer.length; | |
| self.emit('progress', self.size); | |
| cb(); | |
| }); | |
| }; | |
| File.prototype.end = function(cb) { | |
| var self = this; | |
| if (self.hash) { | |
| self.hash = self.hash.digest('hex'); | |
| } | |
| this._writeStream.end(function() { | |
| self.emit('end'); | |
| cb(); | |
| }); | |
| }; | |