@markg85/webdav-server
Version:
101 lines (100 loc) • 4.01 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.VirtualStoredFile = void 0;
var IResource_1 = require("../IResource");
var stream_1 = require("stream");
var VirtualStoredResource_1 = require("./VirtualStoredResource");
var Errors_1 = require("../../../Errors");
var mimeTypes = require("mime-types");
var VirtualStoredFile = /** @class */ (function (_super) {
__extends(VirtualStoredFile, _super);
function VirtualStoredFile(name, parent, fsManager) {
var _this = _super.call(this, name, parent, fsManager) || this;
_this.contentUid = null;
_this.len = 0;
return _this;
}
VirtualStoredFile.prototype.create = function (callback) {
var _this = this;
if (this.contentUid) {
callback(null);
return;
}
this.fsManager.contentManager.allocate(function (e, contentUid) {
_this.contentUid = contentUid;
callback(e);
});
};
VirtualStoredFile.prototype.delete = function (callback) {
var _this = this;
this.fsManager.contentManager.deallocate(this.contentUid, function (e) {
if (e)
callback(e);
else
_this.removeFromParent(callback);
});
};
// ****************************** Std meta-data ****************************** //
VirtualStoredFile.prototype.type = function (callback) {
callback(null, IResource_1.ResourceType.File);
};
// ****************************** Content ****************************** //
VirtualStoredFile.prototype.write = function (targetSource, callback) {
var _this = this;
this.fsManager.contentManager.write(this.contentUid, function (e, w) {
if (e) {
callback(e, null);
return;
}
var size = 0;
var wr = new stream_1.Transform({
transform: function (chunk, encoding, cb) {
size += chunk.length;
this.push(chunk);
cb();
}
});
wr.on('finish', function () {
_this.updateLastModified();
_this.len = size;
});
wr.pipe(w);
callback(null, wr);
});
};
VirtualStoredFile.prototype.read = function (targetSource, callback) {
this.fsManager.contentManager.read(this.contentUid, callback);
};
VirtualStoredFile.prototype.mimeType = function (targetSource, callback) {
var mt = mimeTypes.contentType(this.name);
callback(null, mt ? mt : 'application/octet-stream');
};
VirtualStoredFile.prototype.size = function (targetSource, callback) {
callback(null, this.len);
};
// ****************************** Children ****************************** //
VirtualStoredFile.prototype.addChild = function (resource, callback) {
callback(Errors_1.Errors.InvalidOperation);
};
VirtualStoredFile.prototype.removeChild = function (resource, callback) {
callback(Errors_1.Errors.InvalidOperation);
};
VirtualStoredFile.prototype.getChildren = function (callback) {
callback(Errors_1.Errors.InvalidOperation, null);
};
return VirtualStoredFile;
}(VirtualStoredResource_1.VirtualStoredResource));
exports.VirtualStoredFile = VirtualStoredFile;