51 lines
1.5 KiB
TypeScript
51 lines
1.5 KiB
TypeScript
const modulename = 'WebServer:Intercom';
|
|
import { cloneDeep } from 'lodash-es';
|
|
import { txEnv } from '@core/globalData';
|
|
import consoleFactory from '@lib/console';
|
|
import { InitializedCtx } from '@modules/WebServer/ctxTypes';
|
|
const console = consoleFactory(modulename);
|
|
|
|
|
|
/**
|
|
* Intercommunications endpoint
|
|
* @param {object} ctx
|
|
*/
|
|
export default async function Intercom(ctx: InitializedCtx) {
|
|
//Sanity check
|
|
if ((typeof (ctx as any).params.scope !== 'string') || (ctx as any).request.body === undefined) {
|
|
return ctx.utils.error(400, 'Invalid Request');
|
|
}
|
|
const scope = (ctx as any).params.scope as string;
|
|
|
|
const postData = cloneDeep(ctx.request.body);
|
|
postData.txAdminToken = true;
|
|
|
|
//Delegate to the specific scope functions
|
|
if (scope == 'monitor') {
|
|
try {
|
|
txCore.fxMonitor.handleHeartBeat('http');
|
|
return ctx.send(txCore.metrics.txRuntime.currHbData);
|
|
} catch (error) {
|
|
return ctx.send({
|
|
txAdminVersion: txEnv.txaVersion,
|
|
success: false,
|
|
});
|
|
}
|
|
} else if (scope == 'resources') {
|
|
if (!Array.isArray(postData.resources)) {
|
|
return ctx.utils.error(400, 'Invalid Request');
|
|
}
|
|
txCore.fxResources.tmpUpdateResourceList(postData.resources);
|
|
} else {
|
|
return ctx.send({
|
|
type: 'danger',
|
|
message: 'Unknown intercom scope.',
|
|
});
|
|
}
|
|
|
|
return ctx.send({
|
|
txAdminVersion: txEnv.txaVersion,
|
|
success: false,
|
|
});
|
|
};
|