@markg85/webdav-server
Version:
53 lines (52 loc) • 2.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.method = void 0;
var WebDAVRequest_1 = require("../WebDAVRequest");
var FSManager_1 = require("../../../manager/v1/FSManager");
function method(arg, callback) {
arg.noBodyExpected(function () {
arg.getResource(function (e, r) {
if (e) {
arg.setCode(WebDAVRequest_1.HTTPCodes.NotFound);
callback();
return;
}
arg.checkIfHeader(r, function () {
arg.requirePrivilege(['canMove'], r, function () {
var overwrite = arg.findHeader('overwrite') === 'T';
var destination = arg.findHeader('destination');
if (!destination) {
arg.setCode(WebDAVRequest_1.HTTPCodes.BadRequest);
callback();
return;
}
destination = destination.substring(destination.indexOf('://') + '://'.length);
destination = destination.substring(destination.indexOf('/'));
destination = new FSManager_1.FSPath(destination);
arg.server.getResourceFromPath(arg, destination.getParent(), function (e, rDest) {
if (e) {
arg.setCode(WebDAVRequest_1.HTTPCodes.InternalServerError);
return;
}
arg.requirePrivilege(['canAddChild'], rDest, function () {
r.moveTo(rDest, destination.fileName(), overwrite, function (e) { return process.nextTick(function () {
if (e)
arg.setCode(WebDAVRequest_1.HTTPCodes.InternalServerError);
else {
arg.invokeEvent('move', r, destination);
arg.setCode(WebDAVRequest_1.HTTPCodes.Created);
}
callback();
}); });
});
});
});
});
});
});
}
exports.method = method;
method.isValidFor = function (type) {
return !!type;
};
exports.default = method;