2025-10-01 19:55:38 +02:00

142 lines
4.6 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var FSManager_1 = require("../../../manager/v1/FSManager");
var Errors_1 = require("../../../Errors");
function getResourceFromPath(arg, path, callbackOrRootResource, callback) {
var _this = this;
var rootResource;
if (callbackOrRootResource instanceof Function) {
callback = callbackOrRootResource;
rootResource = this.rootResource;
}
else
rootResource = callbackOrRootResource;
var paths;
if (path.constructor === FSManager_1.FSPath)
paths = path;
else
paths = new FSManager_1.FSPath(path);
if (rootResource.gateway && rootResource.gateway.constructor === Function) {
rootResource.gateway(arg, paths, function (e, r) { return callback(e ? Errors_1.Errors.ResourceNotFound : null, r); });
return;
}
if (paths.isRoot()) {
callback(null, rootResource);
return;
}
rootResource.getChildren(function (e, children) {
if (e) {
callback(e, null);
return;
}
if (children.length === 0) {
callback(Errors_1.Errors.ResourceNotFound, null);
return;
}
var found = false;
var nb = children.length;
function done() {
--nb;
if (nb === 0 && !found)
process.nextTick(function () { return callback(Errors_1.Errors.ResourceNotFound, null); });
}
var _loop_1 = function (k) {
if (found)
return "break";
children[k].webName(function (e, name) {
if (name === paths.rootName()) {
found = true;
paths.removeRoot();
_this.getResourceFromPath(arg, paths, children[k], callback);
return;
}
process.nextTick(done);
});
};
for (var k in children) {
var state_1 = _loop_1(k);
if (state_1 === "break")
break;
}
});
}
exports.getResourceFromPath = getResourceFromPath;
function addResourceTree(_rootResource, _resoureceTree, _callback) {
var _this = this;
var rootResource;
var resoureceTree;
var callback = _callback;
if (!callback) {
resoureceTree = _rootResource;
rootResource = this.rootResource;
callback = _resoureceTree;
}
else {
resoureceTree = _resoureceTree;
rootResource = _rootResource;
}
var cb = callback;
callback = function (e) {
if (cb)
cb(e);
};
if (resoureceTree.constructor === Array) {
var array = resoureceTree;
if (array.length === 0) {
callback(null);
return;
}
var nb_1 = array.length;
var doneArray_1 = function (e) {
if (nb_1 <= 0)
return;
if (e) {
nb_1 = -1;
callback(e);
return;
}
--nb_1;
if (nb_1 === 0)
callback(null);
};
array.forEach(function (r) { return _this.addResourceTree(rootResource, r, doneArray_1); });
}
else if (resoureceTree.fsManager !== undefined) { // resoureceTree is IResource
rootResource.addChild(resoureceTree, callback);
}
else { // resoureceTree is IResourceTreeNode
var irtn = resoureceTree;
var resource_1 = irtn.r ? irtn.r : irtn.resource;
var children_1 = irtn.c ? irtn.c : irtn.children;
rootResource.addChild(resource_1, function (e) {
if (e) {
callback(e);
return;
}
if (children_1 && children_1.constructor !== Array) {
_this.addResourceTree(resource_1, children_1, callback);
return;
}
if (!children_1 || children_1.length === 0) {
callback(null);
return;
}
var nb = children_1.length;
function done(e) {
if (nb <= 0)
return;
if (e) {
nb = -1;
callback(e);
return;
}
--nb;
if (nb === 0)
callback(null);
}
children_1.forEach(function (c) { return _this.addResourceTree(resource_1, c, done); });
});
}
}
exports.addResourceTree = addResourceTree;