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

59 lines
2.7 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var WebDAVRequest_1 = require("../WebDAVRequest");
var IResource_1 = require("../../../resource/v1/IResource");
var Errors_1 = require("../../../Errors");
var path = require("path");
function method(arg, callback) {
arg.noBodyExpected(function () {
arg.checkIfHeader(undefined, function () {
arg.getResource(function (e, r) {
if (e !== Errors_1.Errors.ResourceNotFound) {
arg.setCode(WebDAVRequest_1.HTTPCodes.MethodNotAllowed);
callback();
return;
}
arg.server.getResourceFromPath(arg, arg.path.getParent(), function (e, r) {
if (e) {
arg.setCode(WebDAVRequest_1.HTTPCodes.Conflict);
callback();
return;
}
arg.requirePrivilege(['canAddChild'], r, function () {
if (!r.fsManager) {
arg.setCode(WebDAVRequest_1.HTTPCodes.InternalServerError);
callback();
return;
}
var resource = r.fsManager.newResource(arg.uri, path.basename(arg.uri), IResource_1.ResourceType.Directory, r);
arg.requirePrivilege(['canCreate'], resource, function () {
resource.create(function (e) { return process.nextTick(function () {
if (e) {
arg.setCode(WebDAVRequest_1.HTTPCodes.InternalServerError);
callback();
return;
}
arg.invokeEvent('create', resource);
r.addChild(resource, function (e) { return process.nextTick(function () {
if (e)
arg.setCode(WebDAVRequest_1.HTTPCodes.InternalServerError);
else {
arg.invokeEvent('addChild', r, resource);
arg.setCode(WebDAVRequest_1.HTTPCodes.Created);
}
callback();
}); });
}); });
});
});
});
});
});
});
}
exports.method = method;
method.isValidFor = function (type) {
return !type;
};
exports.default = method;