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

59 lines
2.8 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var WebDAVRequest_1 = require("../WebDAVRequest");
var Errors_1 = require("../../../Errors");
var default_1 = /** @class */ (function () {
function default_1() {
}
default_1.prototype.isValidFor = function (ctx, type) {
return !type || type.isFile;
};
default_1.prototype.chunked = function (ctx, inputStream, callback) {
var targetSource = ctx.headers.isSource;
ctx.getResource(function (e, r) {
ctx.checkIfHeader(r, function () {
//ctx.requirePrivilege(targetSource ? [ 'canSource', 'canWrite' ] : [ 'canWrite' ], r, () => {
var mode = 'canCreate';
r.type(function (e, type) { return process.nextTick(function () {
if (e === Errors_1.Errors.ResourceNotFound) {
mode = 'mustCreate';
}
else if (e) {
if (!ctx.setCodeFromError(e))
ctx.setCode(WebDAVRequest_1.HTTPCodes.InternalServerError);
return callback();
}
else if (!type.isFile) {
ctx.setCode(WebDAVRequest_1.HTTPCodes.MethodNotAllowed);
return callback();
}
r.openWriteStream(mode, targetSource, ctx.headers.contentLength, function (e, wStream, created) {
if (e) {
if (!ctx.setCodeFromError(e))
ctx.setCode(e === Errors_1.Errors.IntermediateResourceMissing || e === Errors_1.Errors.WrongParentTypeForCreation ? WebDAVRequest_1.HTTPCodes.Conflict : WebDAVRequest_1.HTTPCodes.InternalServerError);
return callback();
}
inputStream.pipe(wStream);
wStream.on('finish', function (e) {
if (created)
ctx.setCode(WebDAVRequest_1.HTTPCodes.Created);
else
ctx.setCode(WebDAVRequest_1.HTTPCodes.OK);
//ctx.invokeEvent('write', r);
callback();
});
wStream.on('error', function (e) {
if (!ctx.setCodeFromError(e))
ctx.setCode(WebDAVRequest_1.HTTPCodes.InternalServerError);
callback();
});
});
}); });
//})
});
});
};
return default_1;
}());
exports.default = default_1;