v1.js 1.31 KB
Newer Older
Athanasios's avatar
Athanasios committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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;