import CONSTRAINTS from "../shared/validation/constraints"; import ErrorTypes from "../utils/errorTypes"; import * as MonitoringService from "../services/monitoringService"; import * as Resources from "../utils/resources"; import {handleJSONWithData} from "../utils/resources"; import {normalizeString} from "../shared/utils/strings"; import {forConstraint} from "../shared/validation/validator"; import {Request, Response} from "express"; import {isMonitoringToken, JSONObject, MonitoringResponse, MonitoringToken, toMonitoringResponse} from "../types"; const isValidToken = forConstraint(CONSTRAINTS.token, false); // FIXME: Get rid of any async function doGetAll(req: Request): Promise<{ total: number, result: any }> { const restParams = await Resources.getValidRestParams('list', null, req); const {monitoringStates, total} = await MonitoringService.getAll(restParams); return { total, result: monitoringStates.map(state => { state.mapId = state.mac.toLowerCase().replace(/:/g, ""); return state; }) }; } export function getAll(req: Request, res: Response): void { doGetAll(req) .then(({total, result}) => { res.set('X-Total-Count', total.toString(10)); Resources.success(res, result) }) .catch(err => Resources.error(res, err)); } function getValidatedToken(data: JSONObject): MonitoringToken { if (!isMonitoringToken(data.token)) { throw {data: 'Missing token.', type: ErrorTypes.badRequest}; } const token = normalizeString(data.token); if (!isValidToken(token)) { throw {data: 'Invalid token.', type: ErrorTypes.badRequest}; } return token as MonitoringToken; } export const confirm = handleJSONWithData(async data => { const validatedToken = getValidatedToken(data); const node = await MonitoringService.confirm(validatedToken); return toMonitoringResponse(node); }); export const disable = handleJSONWithData(async data => { const validatedToken: MonitoringToken = getValidatedToken(data); const node = await MonitoringService.disable(validatedToken); return toMonitoringResponse(node); });