52 lines
2.3 KiB
JavaScript
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;
|