legenda.js
2.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
var parameters = require('../helpers/parameters');
var properties = require('../helpers/properties');
var queue_helper = require('../helpers/queue');
var exec = require('child_process').exec, child;
var uuid = require('node-uuid');
var fs = require('fs');
var kue = require('kue'),
queue = kue.createQueue();
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);
// });
var job = queue.create('exec_command_line', {
title: 'Command Line for: ' + req.body.servico,
command_line: command_line
}).save();
queue.process('exec_command_line', function(job, done){
child = queue_helper.exec_command_line(job.data.command_line, done);
});
job.on('complete', function() {
/* 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;