From f3ed511543ecc2d2b1c6da4cdcfcdaf3d1349f89 Mon Sep 17 00:00:00 2001 From: dakerboul Date: Mon, 10 Mar 2025 14:19:48 +0100 Subject: [PATCH] =?UTF-8?q?Ajouter=20des=20routes=20pour=20d=C3=A9marrer?= =?UTF-8?q?=20et=20arr=C3=AAter=20la=20proc=C3=A9dure=20de=20capture?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routes/cameraRoutes.js | 109 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 routes/cameraRoutes.js diff --git a/routes/cameraRoutes.js b/routes/cameraRoutes.js new file mode 100644 index 0000000..b26d2d1 --- /dev/null +++ b/routes/cameraRoutes.js @@ -0,0 +1,109 @@ +const express = require('express'); +const router = express.Router(); +import db from '../../db.js'; +const measureManager = require('../src/measure/measureManager'); +const serverError = require('../utils/serverError'); + +// Status du Projet : +// 0 = En attente de capture +// 1 = En cours de capture +// 2 = Capture terminée + +const minInterval = 3; // Minutes +const maxInterval = 60; // Minutes + +var captureProjectID = -1; +var captureInterval = 0; // Minutes + +function startProcedure(projectId, interval) { + console.log('Démarrage de la procédure de capture'); + captureProjectID = projectId; + if (interval < minInterval) { + throw new Error('L\'intervalle de capture doit être supérieur ou égal à ' + minInterval + ' minutes.'); + } + if (interval > maxInterval) { + throw new Error('L\'intervalle de capture doit être inférieur ou égal à ' + maxInterval + ' minutes.'); + } + captureInterval = interval; + console.log('Procédure de capture démarrée avec succès, projet ID: ' + projectId + ', interval: ' + interval + ' minutes.'); + return { message: 'Procédure de capture démarrée avec succès, projet ID: ' + projectId + ', interval: ' + interval + ' minutes.' }; +} + +function stopProcedure() { + console.log('Arrêt de la procédure de capture'); + return { message: 'Procédure de capture arrêtée avec succès.' }; +} + +router.post('/procedure/start/', async (req, res) => { + const { projectId, interval } = req.body; + try { + const result = startProcedure(projectId, interval); + res.status(200).json(result); + } catch (err) { + serverError(res, err); + } +} +); + +router.get('/procedure/stop/', async (req, res) => { + try { + const result = stopProcedure(); + res.status(200).json(result); + } catch (err) { + serverError(res, err); + } +}); + +/** + * @swagger + * /procedure/start/: + * post: + * summary: Start the capture procedure + * description: Starts the capture procedure with the given project ID and interval. + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * properties: + * projectId: + * type: integer + * description: The ID of the project to start capturing. + * interval: + * type: integer + * description: The interval in minutes for the capture. + * responses: + * 200: + * description: Capture procedure started successfully. + * content: + * application/json: + * schema: + * type: object + * properties: + * message: + * type: string + * example: Procédure de capture démarrée avec succès, projet ID: 1, interval: 10 minutes. + * 500: + * description: Internal server error. + * + * /procedure/stop/: + * get: + * summary: Stop the capture procedure + * description: Stops the capture procedure. + * responses: + * 200: + * description: Capture procedure stopped successfully. + * content: + * application/json: + * schema: + * type: object + * properties: + * message: + * type: string + * example: Procédure de capture arrêtée avec succès. + * 500: + * description: Internal server error. + */ + +module.exports = router;