54 lines
2.4 KiB
JavaScript
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;
|