if (global.GENTLY) require = GENTLY.hijack(require); var util = require('./util'), WriteStream = require('fs').WriteStream, EventEmitter = require('events').EventEmitter; function File(properties) { EventEmitter.call(this); this.size = 0; this.path = null; this.name = null; this.type = null; this.lastModifiedDate = null; this._writeStream = null; for (var key in properties) { this[key] = properties[key]; } this._backwardsCompatibility(); } module.exports = File; util.inherits(File, EventEmitter); // @todo Next release: Show error messages when accessing these File.prototype._backwardsCompatibility = function() { var self = this; this.__defineGetter__('length', function() { return self.size; }); this.__defineGetter__('filename', function() { return self.name; }); this.__defineGetter__('mime', function() { return self.type; }); }; File.prototype.open = function() { this._writeStream = new WriteStream(this.path); }; File.prototype.write = function(buffer, cb) { var self = this; 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; this._writeStream.end(function() { self.emit('end'); cb(); }); };