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

52 lines
2.3 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
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;