UNPKG

@fdm-monster/server

Version:

FDM Monster is a bulk OctoPrint, Klipper, PrusaLink and BambuLab manager to set up, configure and monitor 3D printers. Our aim is to provide neat overview over your farm.

35 lines (34 loc) 1.67 kB
import { validateInput } from "../handlers/validators.js"; import { idRulesV2 } from "../controllers/validation/generic.validation.js"; //#region src/middleware/param-converter.middleware.ts const ParamInt = (paramName) => createParamDecorator(paramName, Number); const ParamBool = (paramName) => createParamDecorator(paramName, Boolean); const ParamString = (paramName) => createParamDecorator(paramName, String); const ParamId = (paramName) => createParamDecorator(paramName, "id"); function createParamDecorator(paramName, type) { return async (req, res, next) => { const paramValue = req.params[paramName]; if (paramValue === void 0) return res.status(400).send(`Missing parameter: ${paramName}`); let convertedValue; let validateIdAsType = null; if (type === "id") validateIdAsType = Number; if (type === Boolean) if (paramValue.toLowerCase() === "true") convertedValue = true; else if (paramValue.toLowerCase() === "false") convertedValue = false; else return res.status(400).send(`Invalid boolean: ${paramName}`); else if (type === Number || validateIdAsType === Number) { convertedValue = Number.parseInt(paramValue, 10); if (Number.isNaN(convertedValue)) return res.status(400).send(`Invalid number: ${paramName}`); } else return res.status(400).send(`Unknown type of: ${paramName}`); if (validateIdAsType === Number) try { await validateInput({ id: convertedValue }, idRulesV2); } catch (e) { return next(e); } req.local = req.local || {}; req.local[paramName] = convertedValue; next(); }; } //#endregion export { ParamBool, ParamId, ParamInt, ParamString }; //# sourceMappingURL=param-converter.middleware.js.map