Commit c3e3375a authored by Athanasios's avatar Athanasios
Browse files

redirect requests

parent 5500bf49
...@@ -4,12 +4,54 @@ const { toLower } = require("../src/customSanitizers"); ...@@ -4,12 +4,54 @@ const { toLower } = require("../src/customSanitizers");
const { errorHandler } = require("../src/errorHandler"); const { errorHandler } = require("../src/errorHandler");
const checkFactory = require("../src/validationCheckFactory"); const checkFactory = require("../src/validationCheckFactory");
const { getSceneHandler } = require("../src/getSceneHandler"); const { getSceneHandler } = require("../src/getSceneHandler");
const { getCapabilitiesHandler } = require("../src/getCapabilitiesHandler");
const bb = require("../src/boundingbox"); const bb = require("../src/boundingbox");
const redirectTo = require("../src/redirectTo");
let router = express.Router(); let router = express.Router();
const checks = [ const checks = [
...checkFactory.commonChecks(), ...checkFactory.commonChecks(),
check("request")
.exists().withMessage("MissingParameterValue")
.customSanitizer(toLower)
.isIn(["getscene", "getcapabilities"]).withMessage("InvalidParameterValue")
];
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);
}
redirectTo(req.query.request, req, res);
});
const capabilitiesChecks = [
check("request")
.exists().withMessage("MissingParameterValue")
.customSanitizer(toLower)
.equals("getcapabilities").withMessage("InvalidParameterValue")
];
router.route("/capabilities").get(capabilitiesChecks, (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);
}
getCapabilitiesHandler(req, res);
});
const sceneChecks = [
check("request") check("request")
.exists().withMessage("MissingParameterValue") .exists().withMessage("MissingParameterValue")
.customSanitizer(toLower) .customSanitizer(toLower)
...@@ -39,10 +81,9 @@ const checks = [ ...@@ -39,10 +81,9 @@ const checks = [
.isIn(["true", "false"]).withMessage("InvalidParameterValue") .isIn(["true", "false"]).withMessage("InvalidParameterValue")
]; ];
router.route("/") router.route("/scene").get(sceneChecks, (req, res) => {
.get(checks, (req, res) => {
const errors = validationResult(req) const errors = validationResult(req);
if (!errors.isEmpty()) { if (!errors.isEmpty()) {
let exception = errorHandler(errors); let exception = errorHandler(errors);
res.set("Content-Type", "application/xml"); res.set("Content-Type", "application/xml");
...@@ -51,6 +92,6 @@ router.route("/") ...@@ -51,6 +92,6 @@ router.route("/")
getSceneHandler(req, res); getSceneHandler(req, res);
}); });
module.exports = router; module.exports = router;
\ No newline at end of file
const toLower = (value) => { const toLower = (value) => {
if(!value) return;
return value.toLowerCase(); return value.toLowerCase();
} }
......
const url = require('url');
const redirectTo = (request, req, res) => {
switch (request.toLowerCase()) {
case "getscene": {
res.redirect(
url.format({
pathname: `${req.baseUrl}/scene`,
query: req.query,
})
);
break;
}
case "getcapabilities": {
res.redirect(
url.format({
pathname: `${req.baseUrl}/capabilities`,
query: req.query,
})
);
break;
}
}
}
module.exports = redirectTo;
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment