monitor/core/routes/intercom.ts
2025-04-16 22:30:27 +07:00

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,
});
};