ZoeApi/controllers/fileController.js

235 lines
8.2 KiB
JavaScript

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;