etherpad-lite/src/node/hooks/express/apicalls.ts

45 lines
1.7 KiB
TypeScript
Raw Normal View History

'use strict';
2020-11-23 13:24:19 -05:00
const log4js = require('log4js');
const clientLogger = log4js.getLogger('client');
2022-01-28 21:16:05 -05:00
const {Formidable} = require('formidable');
2020-11-23 13:24:19 -05:00
const apiHandler = require('../../handler/APIHandler');
2021-10-07 19:47:43 -04:00
const util = require('util');
2012-02-25 15:20:31 +01:00
exports.expressPreSession = async (hookName:string, {app}:any) => {
2020-11-23 13:24:19 -05:00
// The Etherpad client side sends information about how a disconnect happened
app.post('/ep/pad/connection-diagnostic-info', async (req:any, res:any) => {
const [fields, files] = await (new Formidable({})).parse(req);
clientLogger.info(`DIAGNOSTIC-INFO: ${fields.diagnosticInfo}`);
res.end('OK');
2012-02-25 15:20:31 +01:00
});
const parseJserrorForm = async (req:any) => {
2022-01-28 21:16:05 -05:00
const form = new Formidable({
maxFileSize: 1, // Files are not expected. Not sure if 0 means unlimited, so 1 is used.
});
const [fields, files] = await form.parse(req);
return fields.errorInfo;
};
2020-11-23 13:24:19 -05:00
// The Etherpad client side sends information about client side javscript errors
app.post('/jserror', (req:any, res:any, next:Function) => {
(async () => {
const data = JSON.parse(await parseJserrorForm(req));
2021-10-07 19:47:43 -04:00
clientLogger.warn(`${data.msg} --`, {
[util.inspect.custom]: (depth: number, options:any) => {
2021-10-07 19:47:43 -04:00
// Depth is forced to infinity to ensure that all of the provided data is logged.
options = Object.assign({}, options, {depth: Infinity, colors: true});
2021-10-07 19:47:43 -04:00
return util.inspect(data, options);
},
});
2020-11-23 13:24:19 -05:00
res.end('OK');
})().catch((err) => next(err || new Error(err)));
2012-02-25 15:20:31 +01:00
});
2018-03-23 11:17:39 +00:00
2020-11-23 13:24:19 -05:00
// Provide a possibility to query the latest available API version
app.get('/api', (req:any, res:any) => {
2020-11-23 13:24:19 -05:00
res.json({currentVersion: apiHandler.latestApiVersion});
});
2020-11-23 13:24:19 -05:00
};