var parameters = require('../helpers/parameters'); var http = require('http'); var fs = require('fs'); var _ = require('lodash'); /* * Função que processa o vídeo (seja baixando, seja pegando o vídeo enviado) * Deve retornar um objeto contendo o nome e o caminho */ function downloadAndMoveVideo(req, folder, callback) { console.log(req.files[0].path + " " + req.files[0].originalname); // Se enviou o arquivo na requisição if (req.files[0].fieldname !== undefined) { // Se a validação falhar if (parameters.checkVideo(req.files[0].originalname) === false) { var error = 'Vídeo enviado com extensão inválida'; return callback(error); } /* Move o vídeo submetido para a pasta com o seu ID correspondente */ try { if (!_.isEmpty(req.body.wikilibras)) { fs.renameSync(req.files[0].path, 'avatar/' + req.files[0].originalname); fs.renameSync(req.files[1].path, 'blender/' + req.files[1].originalname); } else { fs.renameSync(req.files[0].path, 'uploads/' + req.files[0].originalname); } } catch (err) { console.log("Erro ao mover o vídeo submetido: " + err); callback("Erro ao mover o vídeo submetido: " + err); } return callback(); } // Se o arquivo não foi enviado, mas um video_url foi else if (req.body.video_url !== undefined) { // Requisição para baixar o vídeo http.get(req.body.video_url, function(response) { // Se o vídeo não foi baixado com sucesso if (response.statusCode !== 200) { var error = 'Problema ao carregar video_url: status ' + response.statusCode; return callback(error); } // Nome do arquivo var filename = req.body.video_url.substring(req.body.video_url.lastIndexOf('/') + 1); // Tira os parâmetros HTTP if (filename.lastIndexOf("?") !== -1) { filename = filename.substring(0, filename.lastIndexOf("?")); } var path = folder + '/' + filename; // Cria o stream para escrita var file = fs.createWriteStream(path); // Salva o arquivo em disco response.pipe(file); // Quando a escrita acabar file.on('finish', function() { // Fecha o arquivo file.close(function() { // Retorna o vídeo baixado locals.video = { 'path': path }; // Chama o callback para prosseguir execução callback(); }); }); // Se deu erro na requisição de baixar o vídeo }).on('error', function(e) { var error = 'Problema ao carregar video_url: ' + e.message; return callback(error); }); // Se nem o vídeo foi enviado e nem o video_url foi preenchido } else { var error = "Video deve ser enviado como parâmetro 'video' ou como 'video_url'"; return callback(error); } } module.exports.downloadAndMoveVideo = downloadAndMoveVideo;