legenda.js 2.22 KB
var parameters = require('../helpers/parameters');
var properties = require('../helpers/properties');

var exec = require('child_process').exec, child;
var uuid = require('node-uuid');
var fs = require('fs');

function init(req, res) {

	var id = uuid.v4();

	/* Verifica se o paramêtro [transparencia] possue algum valor */
	if (req.body.transparencia !== '') {
		res.send(500, parameters.errorMessage('O valor de algum parâmetro está vazio'));
		return;
	}

	/* Verifica se os paramêtros [transparencia] possuem os seus únicos valores possíveis */
	if ((parameters.checkTransparency(req.body.transparencia) === true)) {
		res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos'));
		return;
	}

	/* Checa se o arquivo de legenda submetivo possui uma extensão válida */
	if (parameters.checkSubtitle(req.files.legenda.name)) {
		res.send(500, parameters.errorMessage('Legenda com Extensão Inválida'));
		return;
	}

	/* Cria uma pasta cujo o nome é o ID */
	child = exec('mkdir ' + __dirname + '/uploads/' + id);

	/* Listener que dispara quando a pasta é criada */
	child.on('close', function(code, signal){
		/* Move a legenda submetido para a pasta com o seu ID correspondente */
		fs.rename(req.files.legenda.path, __dirname + '/uploads/' + id + '/' + req.files.legenda.name, function(error) {
			if (error) { console.log(error); }
		});

		/* Cria a linha de comando */
		var command_line = 'vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' uploads/' + id + '/' +
							req.files.legenda.name + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + id;

		/* Executa a linha de comando */
		child = exec(command_line, function(err, stdout, stderr) { 
		 	// [stdout] = vlibras-core output
		 	// console.log(stdout);
		});

		/* Listener que dispara quando a requisição ao core finaliza */
		child.on('close', function(code, signal){
			res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.flv' });
		});

		/* Listener que dispara quando a requisição ao core da erro */
		child.on('error', function(code, signal){
			res.send(500, parameters.errorMessage('Erro na chamada ao core'));
		});
	});
};

module.exports.init = init;