From bf51c05461feb52ead45f662f797e8ef66d667e7 Mon Sep 17 00:00:00 2001
From: Vytor Calixto <vytorcalixto@gmail.com>
Date: Tue, 19 Dec 2017 10:07:03 -0200
Subject: [PATCH] Add better download info

---
 src/libs/middlewares/downloadDatabase.js |  9 +++--
 src/libs/models/download.js              |  9 +++++
 src/libs/routes/downloads.js             | 45 ++++++++++++++++++------
 3 files changed, 50 insertions(+), 13 deletions(-)

diff --git a/src/libs/middlewares/downloadDatabase.js b/src/libs/middlewares/downloadDatabase.js
index 0ae358fc..eea53d95 100644
--- a/src/libs/middlewares/downloadDatabase.js
+++ b/src/libs/middlewares/downloadDatabase.js
@@ -50,7 +50,9 @@ module.exports = function download(table, mappingTable) {
                                     table,
                                     name: req.query.name,
                                     mappingTable,
-                                    query: req.sql.toString()
+                                    query: req.sql.toString(),
+                                    status: 'Enviando',
+                                    expired: false
                                 });
                                 console.log(dl);
                                 dl.save((err) => {
@@ -63,7 +65,10 @@ module.exports = function download(table, mappingTable) {
                                 table,
                                 name: req.query.name,
                                 mappingTable,
-                                query: req.sql.toString()
+                                query: req.sql.toString(),
+                                query: req.sql.toString(),
+                                status: 'Enviando',
+                                expired: false
                             });
                             console.log(download);
                         }
diff --git a/src/libs/models/download.js b/src/libs/models/download.js
index 0b5219bd..25e5eb55 100644
--- a/src/libs/models/download.js
+++ b/src/libs/models/download.js
@@ -35,6 +35,15 @@ let Download = new Schema({
         type: Date,
         required: true,
         default: Date.now
+    },
+    status: {
+        type: String
+    },
+    size: {
+        type: Number
+    },
+    expired: {
+        type: Boolean
     }
 });
 
diff --git a/src/libs/routes/downloads.js b/src/libs/routes/downloads.js
index 7a6c4172..07083616 100644
--- a/src/libs/routes/downloads.js
+++ b/src/libs/routes/downloads.js
@@ -12,18 +12,41 @@ const User = require(`${libs}/models/user`);
 
 const passport = require('passport');
 
+const request = require(`request`);
+
+const config = require(`${libs}/config`);
+
 downloadApp.get('/', passport.authenticate('bearer', {session: false}), (req, res, next) => {
-    Download.find({userId: req.user._id}, (err, downloads) => {
-        if (err) {
-            log.error(err);
-            return next(err);
-        }
-
-        if(!downloads) {
-            res.statusCode = 404;
-            return res.json({msg: 'Nenhum download encontrado'});
-        }
-        res.json(downloads);
+    request.get(config.cdn.url + '/api/v1/file', (err, response, body) => {
+        let cdn = JSON.parse(body);
+        Download.find({userId: req.user._id}, (err, downloads) => {
+            if (err) {
+                log.error(err);
+                return next(err);
+            }
+            
+            if(!downloads) {
+                res.statusCode = 404;
+                return res.json({msg: 'Nenhum download encontrado'});
+            } else {
+                downloads.forEach((dl) => {
+                    for(let i = 0; i < cdn.length; ++i) {
+                        if(cdn[i].query == dl.query) {
+                            dl.status = cdn[i].expired ? 'Expirado' : 'Enviado';
+                            dl.size = cdn[i].size;
+                            dl.expired = cdn[i].expired;
+                            dl.updatedAt = cdn[i].lastAccess;
+
+                            dl.save((err) => {
+                                if(err) log.error(err);
+                            });
+                            return;
+                        }
+                    }
+                });
+            }
+            res.json(downloads);
+        });
     });
 });
 
-- 
GitLab