82 lines
3.5 KiB
JavaScript
82 lines
3.5 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var WebDAVRequest_1 = require("../WebDAVRequest");
|
|
var default_1 = /** @class */ (function () {
|
|
function default_1() {
|
|
}
|
|
default_1.prototype.unchunked = function (ctx, data, callback) {
|
|
if (!ctx.user) {
|
|
ctx.setCode(WebDAVRequest_1.HTTPCodes.Forbidden);
|
|
callback();
|
|
return;
|
|
}
|
|
ctx.noBodyExpected(function () {
|
|
var token = ctx.headers.find('Lock-Token');
|
|
if (!token) {
|
|
ctx.setCode(WebDAVRequest_1.HTTPCodes.BadRequest);
|
|
callback();
|
|
return;
|
|
}
|
|
token = token.replace('<', '').replace('>', '').trim();
|
|
ctx.response.setHeader('Lock-Token', '<' + token + '>');
|
|
ctx.getResource(function (e, r) {
|
|
ctx.checkIfHeader(r, function () {
|
|
/*ctx.requireErPrivilege([ 'canGetLock', 'canRemoveLock' ], r, (e, can) => {
|
|
if(e)
|
|
{
|
|
ctx.setCode(HTTPCodes.InternalServerError);
|
|
callback();
|
|
return;
|
|
}
|
|
|
|
if(!can)
|
|
{
|
|
ctx.setCode(HTTPCodes.Forbidden);
|
|
callback();
|
|
return;
|
|
}*/
|
|
r.lockManager(function (e, lm) {
|
|
if (e) {
|
|
if (!ctx.setCodeFromError(e))
|
|
ctx.setCode(WebDAVRequest_1.HTTPCodes.InternalServerError);
|
|
return callback();
|
|
}
|
|
lm.getLock(token, function (e, lock) {
|
|
if (e || !lock) {
|
|
if (!lock)
|
|
ctx.setCode(WebDAVRequest_1.HTTPCodes.Conflict);
|
|
else if (!ctx.setCodeFromError(e))
|
|
ctx.setCode(WebDAVRequest_1.HTTPCodes.InternalServerError);
|
|
return callback();
|
|
}
|
|
if (!!lock.userUid && lock.userUid !== ctx.user.uid) {
|
|
ctx.setCode(WebDAVRequest_1.HTTPCodes.Forbidden);
|
|
return callback();
|
|
}
|
|
lm.removeLock(lock.uuid, function (e, done) {
|
|
if (e || !done) {
|
|
if (!done)
|
|
ctx.setCode(WebDAVRequest_1.HTTPCodes.Forbidden);
|
|
else if (!ctx.setCodeFromError(e))
|
|
ctx.setCode(WebDAVRequest_1.HTTPCodes.InternalServerError);
|
|
}
|
|
else {
|
|
//ctx.invokeEvent('unlock', r, lock);
|
|
ctx.setCode(WebDAVRequest_1.HTTPCodes.NoContent);
|
|
}
|
|
callback();
|
|
});
|
|
});
|
|
});
|
|
//})
|
|
});
|
|
});
|
|
});
|
|
};
|
|
default_1.prototype.isValidFor = function (ctx, type) {
|
|
return !!type;
|
|
};
|
|
return default_1;
|
|
}());
|
|
exports.default = default_1;
|