caldav-adapter
Version:
CalDAV server for Node.js and Koa. Modernized and maintained for Forward Email.
27 lines (24 loc) • 814 B
JavaScript
const raw = require('raw-body');
const { DOMParser } = require('@xmldom/xmldom');
module.exports = async function (ctx) {
try {
ctx.request.body = await raw(ctx.req, {
encoding: true,
limit: '10mb' // Practical
});
} catch (err) {
// <https://github.com/stream-utils/raw-body/blob/f62e660e7c50891844f5615de075ab145c1f6129/README.md?plain=1#L82-L116>
if (ctx.logger) ctx.logger.warn(err);
else if (ctx?.app?.emit) ctx.app.emit('error', err, ctx);
else console.warn(err);
}
if (ctx.request.type.includes('xml')) {
try {
ctx.request.xml = new DOMParser().parseFromString(ctx.request.body);
} catch (err) {
if (ctx.logger) ctx.logger.warn(err);
else if (ctx?.app?.emit) ctx.app.emit('error', err, ctx);
else console.warn(err);
}
}
};