const express = require("express"); const { check, validationResult, oneOf } = require("express-validator") const {toLower} = require("../src/customSanitizers"); const { errorHandler } = require("../src/errorHandler"); const checkFactory = require("../src/validationCheckFactory"); const requestHandlerFactory = require("../src/requestHandlerFactory"); let router = express.Router(); const checks = [ ...checkFactory.commonChecks(), check("request") .exists().withMessage("MissingParameterValue") .customSanitizer(toLower) .isIn([ "getscene", "getcapabilities" ]).withMessage("InvalidParameterValue"), oneOf([[ check("request").customSanitizer(toLower).equals("getscene"), ...checkFactory.specificChecks("getscene") ], [ check("request").customSanitizer(toLower).equals("getcapabilities"), ...checkFactory.specificChecks("getcapabilities") ]]) ]; router.route("/") .get(checks, (req, res) => { const errors = validationResult(req) if (!errors.isEmpty()) { let exception = errorHandler(errors); res.set("Content-Type", "application/xml"); return res.status(400).send(exception); } let requestHandler = requestHandlerFactory.createHandler(req.query.request); requestHandler(req, res); }); module.exports = router;