59 lines
2.7 KiB
JavaScript
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;
|