const { check, query } = require("express-validator"); const { toLower, toUpper, boundingboxIsValid } = require("../src/customSanitizers"); const assets = require("../src/assets"); const commonChecks = () => { return [ check("service") .exists().withMessage("MissingParameterValue") .customSanitizer(toLower) .equals("3dps").withMessage("InvalidParameterValue"), check("acceptversions") .exists().withMessage("MissingParameterValue") .equals("1.0").withMessage("InvalidParameterValue") ]; } const getChecksFor = (parameter) => { switch (parameter.toLowerCase()) { case "request": { return [ ...commonChecks(), query("request") .exists().withMessage("MissingParameterValue") .customSanitizer(toLower) .isIn(["getscene", "getcapabilities"]).withMessage("InvalidParameterValue") ]; } case "scene": { return [ query("crs") .exists().withMessage("MissingParameterValue") .customSanitizer(toUpper) .matches(/^EPSG:\d{4,5}$/).withMessage("InvalidParameterValue"), query("layers") .exists().withMessage("MissingParameterValue") .custom(value => assets.allLayersExist(value)).withMessage("UnknownLayer"), query("boundingbox") .optional() .matches(/^((\-?\d+(\.\d+)?),){3}(\-?\d+(\.\d+)?)$/).withMessage("InvalidParameterValue") .custom(value => boundingboxIsValid(value)).withMessage("InvalidParameterValue") ]; } case "capabilities": { return [ query("request") .exists().withMessage("MissingParameterValue") .customSanitizer(toLower) .equals("getcapabilities").withMessage("InvalidParameterValue") ]; } } } module.exports = { getChecksFor };