require('../connections/mysql-server'); require('../helpers/CheckToken'); require('../helpers/config'); const formidable = require('formidable'); const express = require('express'); const router = express.Router(); const bodyParser = require('body-parser'); router.use(bodyParser.urlencoded({ limit: '50mb', extended: true })); router.use(bodyParser.json({ limit: '50mb', extended: true })); var routes = function () { router.get('/getAll/', verifyJWT, (req, res) => { execSQLQuery(`SELECT * FROM files;`, res, req.originalUrl); }); router.get('/getFile/:idfiles', verifyJWT, (req, res) => { const idfiles = parseInt(req.params.idfiles); execSQLQuery(`SELECT * FROM files WHERE idfiles = ${idfiles};`, res, req.originalUrl); }); router.post('/insert', verifyJWT, (req, res) => { const description = req.body.description; const src = req.body.src; const extension = req.body.extension; execSQLQuery(`INSERT INTO files (description, src, extension) VALUES (?, ?, ?);`, res, req.originalUrl, [description, src, extension]); }); router.patch('/update', verifyJWT, (req, res) => { const idfiles = req.body.idfiles; const description = req.body.description; const src = req.body.src; const extension = req.body.extension; execSQLQuery(`UPDATE files SET description = ?, src = ?, extension = ? WHERE idfiles = ?;`, res, req.originalUrl, [description, src, extension, idfiles]); }); router.get('/delete/:idfiles', verifyJWT, (req, res) => { const idfiles = req.params.idfiles; mysqlConnection.query(`SELECT * FROM files where idfiles in (${idfiles});`, function (error, Arquivos, fields) { mysqlConnection.query(`delete from files where idfiles in (${idfiles});`, function (error, results, fields) { ExcluirArquivos(Arquivos, 0, function(Sucesso) { res.send(Sucesso); }); }); }); }); function ExcluirArquivos(Arquivos, Index, callback) { if (Index < Arquivos.length) { const fs = require('fs'); let dir = Variables('src_media') + Arquivos[Index]['src'].split('/')[3] + "/" + Arquivos[Index]['src'].split('/')[4]; if(fs.existsSync(dir)) { fs.unlink(dir, function(err) { Index++; ExcluirArquivos(Arquivos, Index, callback); }); } else { Index++; ExcluirArquivos(Arquivos, Index, callback); } } else { callback(true); } } router.post('/copy', verifyJWT, (req, res) => { let form = new formidable.IncomingForm(); form.maxFileSize = 600 * 1024 * 1024; form.parse(req, function(err,fields,files){ const fs = require('fs'); var name = fields.name; var dir = Variables('src_media') + 'files/' + name; var oldpath = files.file.path; if(fs.existsSync(dir)) { fs.unlink(dir, function(err) { fs.rename(oldpath, dir, function (err) { res.send(true); }) }); } else { fs.rename(oldpath, dir, function (err) { res.send(true); }) } }); }); // VIDEOS router.get('/getAll1/', verifyJWT, (req, res) => { execSQLQuery(`SELECT f.idfiles, f.description, f.src, f.extension, 'Arquivo' as type FROM files f;`, res, req.originalUrl); }) router.get('/getAllVideos/', verifyJWT, (req, res) => { execSQLQuery(`SELECT * FROM videos;`, res, req.originalUrl); }) router.get('/getAllVideos1/', verifyJWT, (req, res) => { execSQLQuery(`SELECT v.idvideos as idfiles, v.description, concat('https://myrobot.cdn.vooplayer.com/publish/', v.publishid) as src, '.mp4' as extension, 'Vídeo' as type FROM videos v;`, res, req.originalUrl); }) router.get('/getVideo/:idvideos', verifyJWT, (req, res) => { let idvideos = parseInt(req.params.idvideos); execSQLQuery(`SELECT * FROM videos WHERE idvideos = ${idvideos};`, res, req.originalUrl); }) router.post('/getVideoFiltrado', verifyJWT, (req, res) => { const filtro = req.body.filtro; execSQLQuery(`SELECT * FROM videos WHERE description LIKE "%${filtro}%";`, res, req.originalUrl); }) router.post('/insertVideo', verifyJWT, (req, res) => { const idvideos = req.body.idvideos; const publishId = req.body.publishId; const description = req.body.description; execSQLQuery(`INSERT INTO videos(publishId, description) VALUES ('${publishId}','${description}');`, res, req.originalUrl); }) router.patch('/updateVideo', verifyJWT, (req, res) => { const idvideos = req.body.idvideos; const publishId = req.body.publishId; const description = req.body.description; execSQLQuery(`UPDATE videos SET publishId = '${publishId}', description = '${description}' WHERE idvideos = ${idvideos};`, res, req.originalUrl); }) router.post('/CopiarBase64', verifyJWT, (req, res) => { let form = new formidable.IncomingForm(); form.maxFileSize = 600 * 1024 * 1024; form.parse(req, function(err, fields, files) { var base64ToImage = require('base64-to-image'); const name = fields.name; const ext = fields.ext.replace('.', ''); const base64 = fields.base64; const ArrDir = name.split('/'); let Diretorio = ""; for (let i = 0; i < ArrDir.length; i++) { if (i < ArrDir.length - 1) Diretorio += ArrDir[i] + "/"; } const ArrNome = ArrDir[ArrDir.length - 1].split('.'); let NomeArquivo = ""; for (let i = 0; i < ArrNome.length; i++) { if (i < ArrNome.length - 1) NomeArquivo += ArrNome[i] + "."; } NomeArquivo = NomeArquivo.substring(0, NomeArquivo.length - 1); var ArquivoCopia = { 'fileName': NomeArquivo, 'type': 'jpg' }; if (base64ToImage(base64, Variables('src_media') + Diretorio, ArquivoCopia)) { res.send(true); } else { res.send(false); } }); }); router.post('/CopiaArquivos', verifyJWT, (req, res) => { let form = new formidable.IncomingForm(); form.maxFileSize = 600 * 1024 * 1024; form.parse(req, function(err,fields,files){ const fs = require('fs'); var name = fields.name; var oldpath; try { oldpath = files.file.path; } catch(e) { console.log(req.originalUrl + " error 500 - Não foi enviado o arquivo para upload no servidor: " + e); res.send(false); return; } const ArrDir = name.split('/'); let Diretorio = ""; for (let i = 0; i < ArrDir.length; i++) { if (i < ArrDir.length - 1) Diretorio += ArrDir[i] + "/"; } var dirArquivo = Variables('src_media') + name; var dirPasta = Variables('src_media') + Diretorio; if (!fs.existsSync(dirPasta)) fs.mkdirSync(dirPasta); if (fs.existsSync(dirArquivo)) { fs.unlink(dirArquivo, function(err) { //console.log(err); fs.rename(oldpath, dirArquivo, function (err) { console.log(err); res.send(true); console.log(req.originalUrl + " success 200"); }); }); } else { fs.rename(oldpath, dirArquivo, function (err) { res.send(true); console.log(req.originalUrl + " success 200"); }); } }); }); return router; }; module.exports = routes;