video.js
4.29 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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
var parameters = require('../helpers/parameters');
var properties = require('../helpers/properties');
var exec = require('child_process').exec, child;
var querystring = require('querystring');
var http = require('http');
var url = require('url');
var fs = require('fs');
function init(req, res) {
/* Verifica se os paramêtros [posicao, tamanho, transparencia] possuem algum valor */
if ((req.body.posicao !== '') && (req.body.tamanho !== '') && (req.body.transparencia !== '')) {
/* Verifica se os paramêtros [linguagem, posicao, tamanho, transparencia] possuem os seus únicos valores possíveis */
if ((parameters.checkPosition(req.body.posicao) === true) && (parameters.checkSize(req.body.tamanho) === true) && (parameters.checkTransparency(req.body.transparencia) === true)) {
/* Checa se o arquivo de vídeo submetivo possui uma extensão válida */
if (parameters.checkVideo(req.files.video.name)) {
/* Cria uma pasta cujo o nome é o ID */
child = exec('mkdir ' + __dirname + '/uploads/' + properties.ID_FROM_BD);
/* Listener que dispara quando a pasta é criada */
child.on('close', function(code, signal){
/* Move o vídeo submetido para a pasta com o seu ID correspondente */
fs.rename(req.files.video.path, __dirname + '/uploads/' + properties.ID_FROM_BD + '/' + req.files.video.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/' + properties.ID_FROM_BD + '/' +
req.files.video.name + ' 1 ' + parameters.getPosition(req.body.posicao) + ' ' + parameters.getSize(req.body.tamanho) + ' ' +
parameters.getTransparency(req.body.transparencia) + ' ' + properties.ID_FROM_BD;
/* Executa a linha de comando */
child = exec(command_line, function(err, stdout, stderr) {
// [stdout] = vlibras-core output
});
if (req.body.callback === undefined) {
/* 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 + '/' + properties.ID_FROM_BD + '.flv' });
properties.ID_FROM_BD++;
});
child.on('error', function(code, signal){
res.send(500, parameters.errorMessage('Erro na chamada ao core'));
});
} else {
child.on('close', function(code, signal){
var path = url.parse(req.body.callback);
var data = querystring.stringify({ 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + properties.ID_FROM_BD + '.flv' });
var options = {
host: path.hostname,
port: path.port,
path: path.path,
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(data)
}
};
var requesting = http.request(options, function(res) {
res.setEncoding('utf8');
// res.on('data', function (chunk) {
// console.log("req.body: " + chunk);
// });
});
requesting.write(data);
requesting.end();
properties.ID_FROM_BD++;
});
/* Listener que dispara quando a requisição ao core da erro */
child.on('error', function(code, signal){
var data = querystring.stringify(parameters.errorMessage('Erro na chamada ao core'));
var options = {
host: path.hostname,
port: path.port,
path: path.path,
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(data)
}
};
var requesting = http.request(options, function(res) {
res.setEncoding('utf8');
});
requesting.write(data);
requesting.end();
});
res.send(200);
}
});
} else {
res.send(500, parameters.errorMessage('Vídeo com Extensão Inválida'));
}
} else {
res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos'));
}
} else {
res.send(500, parameters.errorMessage('O valor de algum parâmetro está vazio'));
}
};
module.exports.init = init;