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

54 lines
2.4 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var WebDAVRequest_1 = require("../WebDAVRequest");
var Get_1 = require("./Get");
function method(arg, callback) {
arg.noBodyExpected(function () {
arg.getResource(function (e, r) {
if (e) {
arg.setCode(WebDAVRequest_1.HTTPCodes.NotFound);
callback();
return;
}
var targetSource = arg.isSource;
arg.checkIfHeader(r, function () {
arg.requirePrivilege(targetSource ? ['canRead', 'canSource', 'canGetMimeType'] : ['canRead', 'canGetMimeType'], r, function () {
r.type(function (e, type) {
if (e) {
arg.setCode(WebDAVRequest_1.HTTPCodes.InternalServerError);
callback();
return;
}
if (!type.isFile) {
arg.setCode(WebDAVRequest_1.HTTPCodes.MethodNotAllowed);
callback();
return;
}
r.mimeType(targetSource, function (e, mimeType) { return process.nextTick(function () {
if (e) {
arg.setCode(WebDAVRequest_1.HTTPCodes.InternalServerError);
callback();
return;
}
r.size(targetSource, function (e, size) {
if (e)
arg.setCode(WebDAVRequest_1.HTTPCodes.InternalServerError);
else {
arg.setCode(WebDAVRequest_1.HTTPCodes.OK);
arg.response.setHeader('Accept-Ranges', 'bytes');
arg.response.setHeader('Content-Type', mimeType);
arg.response.setHeader('Content-Length', size.toString());
callback();
}
});
}); });
});
});
});
});
});
}
exports.method = method;
method.isValidFor = Get_1.default.isValidFor;
exports.default = method;