Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion documentation/apis/administration/1.0.0/api.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"openapi": "3.0.0",
"openapi": "3.1.0",
"info": {
"description": "Description de l'API d'administration de Road2.",
"version": "1.0.0",
Expand Down
4 changes: 2 additions & 2 deletions documentation/apis/osrm/1.0.0/api.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"openapi": "3.0.0",
"openapi": "3.1.0",
"info": {
"description": "Description of the OSRM API available via Road2. Only route operation in its v1 is available.",
"version": "1.0.0",
Expand Down Expand Up @@ -259,4 +259,4 @@
}
}
}
}
}
4 changes: 2 additions & 2 deletions documentation/apis/simple/1.0.0/api.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"openapi": "3.0.0",
"openapi": "3.1.0",
"info": {
"description": "Description de l'API du service d'itinéraire.",
"version": "1.0.0",
Expand Down Expand Up @@ -1297,4 +1297,4 @@
}
}
}
}
}
4 changes: 2 additions & 2 deletions documentation/apis/valhalla/1.0.0/api.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"openapi": "3.0.0",
"openapi": "3.1.0",
"info": {
"description": "Description of the Valhalla API available via Road2. Only the isochrone API is available for now.",
"version": "1.0.0",
Expand Down Expand Up @@ -175,4 +175,4 @@
}
}
}
}
}
4 changes: 2 additions & 2 deletions documentation_en/apis/administration/1.0.0/api.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"openapi": "3.0.0",
"openapi": "3.1.0",
"info": {
"description": "Description de l'API d'administration de Road2.",
"version": "1.0.0",
Expand Down Expand Up @@ -1859,4 +1859,4 @@
}
}
}
}
}
4 changes: 2 additions & 2 deletions documentation_en/apis/simple/1.0.0/api.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"openapi": "3.0.0",
"openapi": "3.1.0",
"info": {
"description": "Description de l'API du service d'itinéraire.",
"version": "1.0.0",
Expand Down Expand Up @@ -1297,4 +1297,4 @@
}
}
}
}
}
36 changes: 24 additions & 12 deletions src/js/apis/admin/1.0.0/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,22 @@ router.all("/", function(req, res) {
var apiJsonPath = path.join(__dirname, '..', '..', '..','..','..', 'documentation','apis','administration', '1.0.0', 'api.json');
LOGGER.info("Utilisation fichier .json '"+ apiJsonPath + "' pour initialisation swagger-ui de l'API administration en version 1.0.0");
var swaggerDocument = require(apiJsonPath);
router.use('/openapi', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
router.get('/openapi/swagger.json', (req, res) => {
res.setHeader('Content-Type', 'application/json');
res.send(swaggerDocument);
});
router.use(
'/openapi',
swaggerUi.serve,
swaggerUi.setup(null, {
swaggerOptions: {
url: '/admin/1.0.0/openapi/swagger.json'
}
})
);

// Version
// Pour avoir la version de Road2 utilisée
// Pour avoir la version de Road2 utilisée
router.route("/version")

.get(async function(req, res, next) {
Expand Down Expand Up @@ -152,7 +164,7 @@ router.route("/services/:service")

// Envoie à l'administrateur et récupération de l'objet réponse
const serviceResponse = administrator.getServiceConfiguration(serviceRequest.service);

// Formattage de la réponse
res.set('content-type', 'application/json');
res.status(200).json(serviceResponse);
Expand Down Expand Up @@ -221,22 +233,22 @@ router.route("/services/:service/projections/:projection")
const parameters = req.params;
LOGGER.debug(parameters);

try {
try {

// Vérification des paramètres de la requête
const projectionRequest = controller.checkProjectionParameters(parameters);
LOGGER.debug(projectionRequest);

// Envoie à l'administrateur et récupération de l'objet réponse
const projectionResponse = await administrator.computeRequest(projectionRequest.service, projectionRequest);
LOGGER.debug(projectionResponse);

// Formattage de la réponse
const userResponse = controller.writeProjectionResponse(projectionResponse);
LOGGER.debug(userResponse);

res.set('content-type', 'application/json');
res.status(200).json(userResponse);
res.status(200).json(userResponse);

} catch (error) {
return next(error);
Expand All @@ -262,7 +274,7 @@ router.use(notFoundError);
*/

function logError(err, req, res, next) {

let message = {
request: req.originalUrl,
query: req.query,
Expand Down Expand Up @@ -290,14 +302,14 @@ function logError(err, req, res, next) {
*/

function sendError(err, req, res, next) {
// On ne veut pas le même comportement en prod et en dev
// On ne veut pas le même comportement en prod et en dev
if (process.env.NODE_ENV === "production") {
if (err.status) {
// S'il y a un status dans le code, alors cela veut dire qu'on veut remonter l'erreur au client
// S'il y a un status dans le code, alors cela veut dire qu'on veut remonter l'erreur au client
res.status(err.status);
res.json({ error: {message: err.message}});
} else {
// S'il n'y a pas de status dans le code alors on ne veut pas remonter l'erreur
// S'il n'y a pas de status dans le code alors on ne veut pas remonter l'erreur
res.status(500);
res.json({ error: {message: "Internal Server Error"}});
}
Expand All @@ -310,7 +322,7 @@ function sendError(err, req, res, next) {
more: err
}});
} else {
// En dev, on veut faire remonter n'importe quelle erreur
// En dev, on veut faire remonter n'importe quelle erreur
res.status(err.status || 500);
res.json({ error: {message: err.message}});
}
Expand Down
16 changes: 14 additions & 2 deletions src/js/apis/osrm/1.0.0/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,19 @@ router.all("/", function(req, res) {
let apiJsonPath = path.join(__dirname, '..', '..', '..','..','..', 'documentation','apis','osrm', '1.0.0', 'api.json');
LOGGER.info("using file '"+ apiJsonPath + "' to initialize swagger-ui for OSRM API version 1.0.0");
let swaggerDocument = require(apiJsonPath);
router.use('/openapi', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
router.get('/openapi/swagger.json', (req, res) => {
res.setHeader('Content-Type', 'application/json');
res.send(swaggerDocument);
});
router.use(
'/openapi',
swaggerUi.serve,
swaggerUi.setup(null, {
swaggerOptions: {
url: '/osrm/1.0.0/openapi/swagger.json'
}
})
);

// GetCapabilities
router.all("/resources", function(req, res, next) {
Expand Down Expand Up @@ -116,7 +128,7 @@ function logError(err, req, res, next) {
} else {
LOGGER.error(message);
}

next(err);
}

Expand Down
46 changes: 29 additions & 17 deletions src/js/apis/simple/1.0.0/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ router.use(express.json(
{
type: (req) => {
// Le seul content-type accepté a toujours été application/json, on rend cela plus explicite
// Cette fonction permet d'arrêter le traitement de la requête si le content-type n'est pas correct.
// Cette fonction permet d'arrêter le traitement de la requête si le content-type n'est pas correct.
// Sans elle, le traitement continue.
if (req.get('Content-Type') !== "application/json") {
throw errorManager.createError(" Wrong Content-Type. Must be 'application/json' ", 400);
Expand All @@ -28,16 +28,16 @@ router.use(express.json(
}
},
verify: (req, res, buf, encoding) => {
// Cette fonction permet de vérifier que le JSON envoyé est valide.
// Si ce n'est pas le cas, le traitement de la requête est arrêté.
// Cette fonction permet de vérifier que le JSON envoyé est valide.
// Si ce n'est pas le cas, le traitement de la requête est arrêté.
try {
JSON.parse(buf);
} catch (error) {
throw errorManager.createError("Invalid request body. Error during the parsing of the body: " + error.message, 400);
}
}
}
));
));
// ---

// Accueil de l'API
Expand All @@ -51,7 +51,19 @@ router.all("/", function(req, res) {
var apiJsonPath = path.join(__dirname, '..', '..', '..','..','..', 'documentation','apis','simple', '1.0.0', 'api.json');
LOGGER.info("Utilisation fichier .json '"+ apiJsonPath + "' pour initialisation swagger-ui de l'API simple en version 1.0.0");
var swaggerDocument = require(apiJsonPath);
router.use('/openapi', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
router.get('/openapi/swagger.json', (req, res) => {
res.setHeader('Content-Type', 'application/json');
res.send(swaggerDocument);
});
router.use(
'/openapi',
swaggerUi.serve,
swaggerUi.setup(null, {
swaggerOptions: {
url: '/simple/1.0.0/openapi/swagger.json'
}
})
);

// GetCapabilities
router.all("/getcapabilities", function(req, res) {
Expand All @@ -69,7 +81,7 @@ router.all("/getcapabilities", function(req, res) {
let getCapabilities = req.app.get(uid + "-getcap");
LOGGER.debug(getCapabilities);

// Modification si Host ou X-Forwarded-Host précisè dans l'en-tête de la requête
// Modification si Host ou X-Forwarded-Host précisè dans l'en-tête de la requête
// il est récupéré par express dans req.host
if (req.hostname) {

Expand Down Expand Up @@ -171,7 +183,7 @@ router.route("/route")
});

// Nearest
// Pour trouver les points du graphe les plus proche d'un autre
// Pour trouver les points du graphe les plus proche d'un autre
router.route("/nearest")

.get(async function(req, res, next) {
Expand Down Expand Up @@ -211,9 +223,9 @@ router.route("/nearest")
}

})

.post(async function(req, res, next) {

LOGGER.debug("requete POST sur /simple/1.0.0/nearest?");
LOGGER.debug(req.originalUrl);

Expand Down Expand Up @@ -247,8 +259,8 @@ router.route("/nearest")
} catch (error) {
return next(error);
}


});

/* Génération d'isochrone. */
Expand Down Expand Up @@ -302,7 +314,7 @@ router.route("/isochrone")
LOGGER.debug(parameters);

try {

// Vérification des paramètres de la requête
const isochroneRequest = controller.checkIsochroneParameters(parameters, service, "POST");
LOGGER.debug(isochroneRequest);
Expand Down Expand Up @@ -356,7 +368,7 @@ function logError(err, req, res, next) {
} else {
LOGGER.error(message);
}

next(err);
}

Expand All @@ -369,14 +381,14 @@ function logError(err, req, res, next) {
*/

function sendError(err, req, res, next) {
// On ne veut pas le même comportement en prod et en dev
// On ne veut pas le même comportement en prod et en dev
if (process.env.NODE_ENV === "production") {
if (err.status) {
// S'il y a un status dans le code, alors cela veut dire qu'on veut remonter l'erreur au client
// S'il y a un status dans le code, alors cela veut dire qu'on veut remonter l'erreur au client
res.status(err.status);
res.json({ error: {errorType: err.code, message: err.message}});
} else {
// S'il n'y a pas de status dans le code alors on ne veut pas remonter l'erreur
// S'il n'y a pas de status dans le code alors on ne veut pas remonter l'erreur
res.status(500);
res.json({ error: {errorType: "internal", message: "Internal Server Error"}});
}
Expand All @@ -389,7 +401,7 @@ function sendError(err, req, res, next) {
more: err
}});
} else {
// En dev, on veut faire remonter n'importe quelle erreur
// En dev, on veut faire remonter n'importe quelle erreur
res.status(err.status || 500);
res.json({ error: {errorType: err.code, message: err.message}});
}
Expand Down
Loading