inceptum
Version:
hipages take on the foundational library for enterprise-grade apps written in NodeJS
34 lines • 1.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ContentNegotiationMiddleware = void 0;
const xmlbuilder = require("xmlbuilder");
/**
* To use this middleware with swagger, set xml root tag name in relevant definition in swagger.yml
*/
class ContentNegotiationMiddleware {
constructor(xmlRoot) {
this.xmlRoot = xmlRoot;
}
getMiddleware() {
const xmlRoot = this.xmlRoot;
if (!xmlRoot) {
return;
}
return (req, res, next) => {
const xmlType = 'application/xml';
if (xmlType === req.get('accept')) {
const originalSend = res.send;
res.send = function (...data) {
const obj = {};
obj[xmlRoot] = data[0];
data[0] = xmlbuilder.create(obj).end();
originalSend.apply(res, data);
};
res.header('content-type', xmlType);
}
next();
};
}
}
exports.ContentNegotiationMiddleware = ContentNegotiationMiddleware;
//# sourceMappingURL=ContentNegotiationMiddleware.js.map