瀏覽代碼

Préparation pour sauvegarde d'un fichier existant ou d'un nouveau fichier

Loquicom 5 年之前
父節點
當前提交
d613203ded
共有 2 個文件被更改,包括 88 次插入37 次删除
  1. 61 35
      node/src/router.js
  2. 27 2
      readme.md

+ 61 - 35
node/src/router.js

@@ -90,6 +90,53 @@ const router = class Router {
 
     /* --- Definitions des routes --- */
 
+    newFile(user, file, data, res) {
+        let promise, filename;
+        // Si on sauvegarde les données dans des fichiers, generation du chemin
+        if (global.storage === 'file') {
+            let hash = Date.now() + '-' + req.body.user + '-' + req.params.file;
+            hash = crypto.createHash('md5').update(hash).digest('base64');
+            hash = hash.replace(/=/g, '').replace(/\//g, '');
+            filename = './data/' + hash + '.fdata';
+            promise = db.addFile(user, file, filename);
+        }
+        // Sinon om met directement en base
+        else {
+            promise = db.addFile(user, file, data);
+        }
+        if (promise === false) {
+            res.json(error(ERR_REQUEST));
+            return;
+        }
+        promise.then((fileId) => {
+            if (fileId === false) {
+                res.json(ERR_SERV);
+            } else {
+                // Si en mode fichier stockage dans un fichier
+                if ((global.storage === 'file')) {
+                    fs.writeFile(filename, data, (err) => {
+                        if (err) {
+                            if (global.verbose) {
+                                console.error(err);
+                            }
+                            res.json(error(ERR_SERV));
+                        } else {
+                            res.json(success({fileId: fileId, fileName: file}));
+                        }
+                    });
+                }
+                // Le fichier est directement sauvegarder en base
+                else {
+                    res.json(success({fileId: fileId, fileName: file}));
+                }
+            }
+        });
+    }
+
+    saveFile() {
+
+    }
+
     route() {
         this.app.get('/', [this.verbose, (req, res) => {
             res.json(this.doc);
@@ -195,44 +242,22 @@ const router = class Router {
             });
         }]);
 
-        this.app.post('/save/:file', [this.verbose, this.verifyAuth, (req, res) => {
-            //Si on sauvegarde les données dans des fichiers, generation du chemin
-            let data = req.body.data;
-            if (global.storage === 'file') {
-                let hash = Date.now() + '-' + req.body.user + '-' + req.params.file;
-                hash = crypto.createHash('md5').update(hash).digest('base64');
-                hash = hash.replace(/=/g, '').replace(/\//g, '');
-                data = './data/' + hash + '.fdata';
-            }
-            const promise = db.addFile(req.body.user, req.params.file, data);
-            if (promise === false) {
-                res.json(error(ERR_REQUEST));
-                return;
-            }
-            promise.then((fileId) => {
-                if (fileId === false) {
-                    res.json(ERR_SERV);
+        this.app.post('/save/:file?', [this.verbose, this.verifyAuth, (req, res) => {
+            if (req.params.file === undefined) {
+                if (req.body.file === undefined || req.body.data === undefined) {
+                    res.json(error(ERR_REQUEST));
                 } else {
-                    // Si en mode fichier stockage dans un fichier
-                    if ((global.storage === 'file')) {
-                        fs.writeFile(data, req.body.data, (err) => {
-                            if (err) {
-                                if (global.verbose) {
-                                    console.error(err);
-                                }
-                                res.json(error(ERR_SERV));
-                            } else {
-                                res.json(success({fileId: fileId, fileName: req.params.file}));
-                            }
-                        });
-                    }
-                    // Le fichier est directement sauvegarder en base
-                    else {
-                        res.json(success({fileId: fileId, fileName: req.params.file}));
-                    }
+                    this.newFile(req.body.user, req.body.file, req.body.data, res);
                 }
-            });
+            } else {
+                if (req.body.data === undefined) {
+                    res.json(error(ERR_REQUEST));
+                } else {
+                    this.saveFile(req.body.user, req.body.data, res);
+                }
+            }
         }]);
+
     }
 
 };
@@ -246,6 +271,7 @@ app.get('/', function (req, res) {
 });
 
 app.get('/test/:val?', function (req, res) {
+    console.log(req.params.val);
     res.send('Val = ' + req.params.val);
 });
 

+ 27 - 2
readme.md

@@ -142,9 +142,34 @@ Récupère un fichier. Remplacer {file} par l'id du fichier à récupèrer. La v
 
 ------
 
-`POST /save/{fileName}`
+`POST /save`
 
-Sauvegarde un fichier. Remplacer {fileName} par le nom du fichier à sauvegarder. La valeur token n'est necessaire que si l'authentification est activée.
+Sauvegarde un nouveau fichier. La valeur token n'est necessaire que si l'authentification est activée. 
+Le champ user correspond au nom de l'utilisateur et le champ data au contenue du fichier
+
+Requete :
+```json
+{
+    "user": "string",
+    "token": "string",
+    "file": "string",
+    "data": "string"
+}
+```
+Reponse :
+```json
+{
+    "success": true,
+    "fileid": "string",
+    "filename": "string"
+}
+```
+
+------
+
+`POST /save/{fileId}`
+
+Sauvegarde un fichier. Remplacer {fileId} par l'id du fichier à sauvegarder. La valeur token n'est necessaire que si l'authentification est activée.
 
 ```json
 // Requete