Commit b2e0fde08d7afde4f88b4b97b43c1a4254cd13a2

Authored by Cassio Cabral
1 parent 08782b4c
Exists in master and in 1 other branch devel

refactor log system, calls to the logger and calling in the right places. Deal w…

…ith subtitles on video_rnp
endpoints/audio.js
... ... @@ -60,7 +60,6 @@ function process(req, res) {
60 60 try {
61 61 callCore(id, locals.audio, req, res);
62 62 callback();
63   - logger.incrementService("outros", "traducoes");
64 63 } catch (err) {
65 64 logger.incrementError("1", err);
66 65 callback(err);
... ... @@ -101,7 +100,7 @@ function callCore(id, audio, req, res) {
101 100  
102 101 console.log("=== Core: " + command_line);
103 102  
104   - core.call(id, command_line, req, res);
105   -};
  103 + core.call(id, command_line, req, res, null, null, "outros");
  104 +}
106 105  
107 106 module.exports.init = init;
... ...
endpoints/ios.js
... ... @@ -10,6 +10,8 @@ var logger = require('../logsystem/main.js');
10 10  
11 11 function init(req, res) {
12 12  
  13 + logger.incrementService("outros", "requisicoes");
  14 +
13 15 var id = uuid.v4();
14 16  
15 17 /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */
... ...
endpoints/legenda.js
... ... @@ -12,6 +12,9 @@ function init(req, res) {
12 12  
13 13 var id = uuid.v4();
14 14  
  15 + logger.incrementService("outros", "requisicoes");
  16 +
  17 +
15 18 /* Verifica se o paramêtro [transparencia] possue algum valor */
16 19 if (req.body.transparencia === '') {
17 20 res.send(500, parameters.errorMessage('O valor de algum parâmetro está vazio'));
... ... @@ -69,7 +72,7 @@ function init(req, res) {
69 72 /* Listener que dispara quando a requisição ao core da erro */
70 73 child.on('error', function(code, signal){
71 74 res.send(500, parameters.errorMessage('Erro na chamada ao core'));
72   - logger.incrementError("1", err);
  75 + logger.incrementError("legenda", err);
73 76 });
74 77 });
75 78  
... ...
endpoints/texto.js
... ... @@ -13,6 +13,8 @@ function init(req, res, Request) {
13 13  
14 14 var id = uuid.v4();
15 15  
  16 + logger.incrementService("outros", "requisicoes");
  17 +
16 18 /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */
17 19  
18 20 if ((req.body.transparencia === '') || (req.body.texto === '') || (req.body.linguagem === '')) {
... ... @@ -43,7 +45,6 @@ function init(req, res, Request) {
43 45 db.create(request_object, function(result) {
44 46 if (result !== null) {
45 47 res.send(200, { 'status': 'Requisição ' + result.id + ' cadastrada com sucesso.', 'video_id': result.id});
46   - logger.incrementService("outros", "traducoes");
47 48 } else {
48 49 res.send(500, { 'error': 'Erro na criação da requisição.'});
49 50 }
... ... @@ -74,7 +75,7 @@ function init(req, res, Request) {
74 75 /* Listener que dispara quando a requisição ao core da erro */
75 76 child.on('error', function(code, signal){
76 77 res.send(500, parameters.errorMessage('Erro na chamada ao core'));
77   - logger.incrementError("1", 'Erro na chamada ao core');
  78 + logger.incrementError("core", 'Erro na chamada ao core');
78 79 db.update(request_object, 'Error', function(result) {
79 80 });
80 81 });
... ...
endpoints/video.js
... ... @@ -11,6 +11,9 @@ var logger = require('../logsystem/main.js');
11 11 function init(req, res) {
12 12 res.set("Content-Type", "application/json");
13 13  
  14 + logger.incrementService("videos", "requisicoes");
  15 +
  16 +
14 17 /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */
15 18 if ((req.body.posicao === '') || (req.body.tamanho === '') || (req.body.transparencia === '')) {
16 19 res.send(500, parameters.errorMessage('O valor de algum parâmetro está vazio'));
... ... @@ -59,7 +62,6 @@ function process(req, res) {
59 62 // Faz a chamada ao core
60 63 try {
61 64 callCore(id, locals.video, locals.subtitle, req, res);
62   - logger.incrementService("videos", "traducoes");
63 65 callback();
64 66 } catch (err) {
65 67 logger.incrementError("1", err);
... ... @@ -101,7 +103,7 @@ function callCore(id, video, subtitle, req, res) {
101 103  
102 104 console.log("=== Core: " + command_line);
103 105  
104   - core.call(id, command_line, req, res);
  106 + core.call(id, command_line, req, res, null, null, "videos");
105 107 }
106 108  
107 109 module.exports.init = init;
... ...
endpoints/video_legenda.js
... ... @@ -60,7 +60,6 @@ function process(req, res) {
60 60 try {
61 61 callCore(id, locals.video, locals.subtitle, req, res);
62 62 callback();
63   - logger.incrementService("outros", "traducoes");
64 63 } catch (err) {
65 64 callback(err);
66 65 logger.incrementError("1", err);
... ... @@ -107,7 +106,7 @@ function callCore(id, video, subtitle, req, res) {
107 106  
108 107 console.log("=== Core: " + command_line);
109 108  
110   - core.call(id, command_line, req, res);
111   -};
  109 + core.call(id, command_line, req, res, null, null, "outros");
  110 +}
112 111  
113 112 module.exports.init = init;
... ...
endpoints/videornp.js
... ... @@ -10,12 +10,16 @@ var async = require('async');
10 10 var _ = require('lodash');
11 11 var kue = require('kue'),
12 12 queue = kue.createQueue();
  13 +var logger = require('../logsystem/main.js');
  14 +
13 15  
14 16 function init(req, res, Request) {
15 17 res.set("Content-Type", "application/json");
16 18  
17 19 if (_.isEmpty(req.body.legenda_url) && _.isEmpty(req.body.video_url)) {
18 20 res.send(500, parameters.errorMessage('O valor do parâmetro legenda_url e video_url está vazio'));
  21 + logger.incrementError("video", "O valor do parâmetro legenda_url e video_url está vazio");
  22 + logger.incrementError("legenda", "O valor do parâmetro legenda_url e video_url está vazio");
19 23 return;
20 24 }
21 25  
... ... @@ -65,7 +69,7 @@ function process(req, res, Request) {
65 69  
66 70 db.create(request_object, function(result) {
67 71 if (result !== null) {
68   - res.send(200, { 'id': result.id });
  72 + res.send(200, { 'status': 'Requisição ' + result.id + ' cadastrada com sucesso.', 'video_id': result.id});
69 73 } else {
70 74 res.send(500, { 'error': 'Erro na criação da requisição.'});
71 75 }
... ... @@ -98,7 +102,6 @@ function process(req, res, Request) {
98 102  
99 103 // Faz a chamada ao core
100 104 try {
101   -
102 105 if (_.isEmpty(req.body.legenda_url)) { // video_url present
103 106 callCore(id, locals.video, locals.subtitle, req, res, Request, request_object);
104 107 } else {
... ... @@ -125,10 +128,18 @@ function downloadAndMoveFiles(folder, req, locals, callback) {
125 128 function(callback) {
126 129 if (_.isEmpty(req.body.legenda_url)) { // video_url present
127 130 // Download video
128   - files.downloadAndMoveVideo(folder, req, locals, callback);
  131 + try {
  132 + files.downloadAndMoveVideo(folder, req, locals, callback);
  133 + } catch (e) {
  134 + logger.incrementError("video", e);
  135 + }
129 136 } else {
130 137 // Download subtitle
131   - files.downloadAndMoveSubtitle(folder, req, locals, callback);
  138 + try {
  139 + files.downloadAndMoveSubtitle(folder, req, locals, callback);
  140 + } catch (e) {
  141 + logger.incrementError("legenda", e);
  142 + }
132 143 }
133 144  
134 145 }
... ... @@ -154,7 +165,7 @@ function callCore(id, video, subtitle, req, res, Request, request_object) {
154 165 console.log("=== Core: " + command_line);
155 166  
156 167 console.log("ID: " + request_object.id);
157   - core.call(id, command_line, req, res, Request, request_object);
  168 + core.call(id, command_line, req, res, Request, request_object, "videos");
158 169 }
159 170  
160 171 function callCoreSubtitle(id, subtitle, req, res, Request, request_object) {
... ... @@ -176,7 +187,7 @@ function callCoreSubtitle(id, subtitle, req, res, Request, request_object) {
176 187 queue.process('exec_command_line' + id, function(job, done){
177 188 child = queue_helper.exec_command_line(job.data.command_line, done);
178 189 });
179   -
  190 +
180 191 job.on('complete', function() {
181 192 /* Executa a linha de comando */
182 193 child = exec(command_line, function(err, stdout, stderr) {
... ... @@ -186,14 +197,34 @@ function callCoreSubtitle(id, subtitle, req, res, Request, request_object) {
186 197  
187 198 /* Listener que dispara quando a requisição ao core finaliza */
188 199 child.on('close', function(code, signal){
189   - res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.flv' });
  200 +
  201 + // res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.flv' });
  202 +
  203 + // Se o core executou com erro
  204 + if (code !== 0) {
  205 + db.update(Request, request_object.id, 'Error', function (result) {});
  206 + console.log("Erro no retorno do core. Código: " + code);
  207 + logger.incrementError('core', "Erro no retorno do core. Código: " + code);
  208 + } else {
  209 + // Se o core executou normal
  210 + db.update(Request, request_object.id, 'Completed', function (result) {});
  211 + res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4'});
  212 + logger.incrementService("videos", "traducoes");
  213 + }
  214 + });
  215 +
  216 +
190 217 });
191 218  
192 219 /* Listener que dispara quando a requisição ao core da erro */
193 220 child.on('error', function(code, signal){
194   - res.send(500, parameters.errorMessage('Erro na chamada ao core'));
  221 + db.update(Request, request_object.id, 'Error', function (result) {});
  222 + console.log("Erro no retorno do core. Código: " + code);
  223 + logger.incrementError('core', "Erro no retorno do core. Código: " + code);
  224 + res.send(500, parameters.errorMessage('Erro na chamada ao core'));
195 225 });
196   - });
  226 +
  227 +
197 228  
198 229 }
199 230  
... ...
helpers/core.js
... ... @@ -10,7 +10,8 @@ var kue = require('kue'),
10 10 var logger = require('../logsystem/main.js');
11 11 var db = require('../db/api');
12 12  
13   -function call(id, command_line, req, res, Request, request_object) {
  13 +// req_type == "video" ou "outros" para ser usado no logger
  14 +function call(id, command_line, req, res, Request, request_object, req_type) {
14 15 /* Executa a linha de comando */
15 16 // child = exec(command_line, function(err, stdout, stderr) {
16 17 // // [stdout] = vlibras-core output
... ... @@ -19,6 +20,11 @@ function call(id, command_line, req, res, Request, request_object) {
19 20 // // console.log('STDERR: ' + stderr);
20 21 // });
21 22  
  23 + // para ser usado no logger
  24 + req_type = req_type === "videos" ? req_type : "outros";
  25 +
  26 + logger.incrementService(req_type, "requisicoes");
  27 +
22 28 var child,
23 29 job = queue.create('exec_command_line' + id, {
24 30 title: 'Command Line for: ' + req.body.servico,
... ... @@ -27,9 +33,6 @@ function call(id, command_line, req, res, Request, request_object) {
27 33  
28 34 queue.process('exec_command_line' + id, function(job, done){
29 35 child = queue_helper.exec_command_line(job.data.command_line, done);
30   - if (child === undefined) {
31   - throw "Erro ao conectar com o core";
32   - }
33 36 });
34 37  
35 38 job.on('complete', function() {
... ... @@ -43,18 +46,20 @@ function call(id, command_line, req, res, Request, request_object) {
43 46 if (code !== 0) {
44 47 db.update(Request, request_object.id, 'Error', function (result) {
45 48 });
46   - throw "Erro no retorno do core. Código: " + code;
47   - }
48   -
49   - // Se o core executou normal
50   - db.update(Request, request_object.id, 'Completed', function (result) {
51   - });
52   - res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4'});
  49 + console.log("Erro no retorno do core. Código: " + code);
  50 + logger.incrementError('core', "Erro no retorno do core. Código: " + code);
  51 + } else {
  52 + // Se o core executou normal
  53 + db.update(Request, request_object.id, 'Completed', function (result) {});
  54 + res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4'});
  55 + logger.incrementService(req_type, "traducoes");
  56 + }
53 57 });
54 58  
55 59 // Se a chamada deu erro
56 60 child.on('error', function(code, signal) {
57   - throw "Erro na chamada ao core";
  61 + console.log("Erro no retorno do core. Código: " + code);
  62 + logger.incrementError('core', "Erro no retorno do core. Código: " + code);
58 63 });
59 64  
60 65  
... ... @@ -63,17 +68,31 @@ function call(id, command_line, req, res, Request, request_object) {
63 68  
64 69 // Se a chamada foi feita com sucesso
65 70 child.on('close', function(code, signal) {
  71 + var data;
66 72  
67 73 // Endereço do callback
68 74 var path = url.parse(req.body.callback);
69 75  
70 76 // Se o core executou com erro
71   - if (code === 0) {
72   - var data = querystring.stringify({ 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4', 'id' : id });
73   - } else {
74   - var data = querystring.stringify({ 'error': 'Erro no Core', 'code': code, 'id' : id });
75   - logger.incrementError("2");
76   - }
  77 + // if (code === 0) {
  78 + // data = querystring.stringify({ 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4', 'id' : id });
  79 + // } else {
  80 + // data = querystring.stringify({ 'error': 'Erro no Core', 'code': code, 'id' : id });
  81 + // logger.incrementError('core', "Erro no retorno do core. Código: " + code);
  82 + // }
  83 +
  84 + // Se o core executou com erro
  85 + if (code !== 0) {
  86 + db.update(Request, request_object.id, 'Error', function (result) {
  87 + });
  88 + console.log("Erro no retorno do core. Código: " + code);
  89 + logger.incrementError('core', "Erro no retorno do core. Código: " + code);
  90 + } else {
  91 + // Se o core executou normal
  92 + db.update(Request, request_object.id, 'Completed', function (result) {});
  93 + res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4'});
  94 + logger.incrementService(req_type, "traducoes");
  95 + }
77 96  
78 97 // Chama o callback
79 98 requests.postRequest(path, data);
... ... @@ -83,7 +102,7 @@ function call(id, command_line, req, res, Request, request_object) {
83 102 child.on('error', function(code, signal) {
84 103 var path = url.parse(req.body.callback);
85 104 var data = querystring.stringify( { 'error': 'Erro na chamada ao core', 'code': code, 'id': id } );
86   - logger.incrementError("2");
  105 + logger.incrementError('core', "Erro no retorno do core. Código: " + code);
87 106 requests.postRequest(path, data);
88 107 });
89 108  
... ...
helpers/queue.js
... ... @@ -9,10 +9,10 @@ exports.exec_command_line = function (command_line, done) {
9 9 });
10 10  
11 11 child.on('error', function(code, signal) {
12   - throw "Erro ao conectar com o core";
  12 + throw new Error("Erro ao conectar com o core");
13 13 });
14 14 child.on('disconnect', function(code, signal) {
15   - throw "Disconectado do core";
  15 + throw new Error("Disconectado do core");
16 16 });
17 17  
18 18 done();
... ...
logsystem/main.coffee
... ... @@ -25,10 +25,18 @@ exports.incrementError = (id, detalhe="", inc=1) ->
25 25 bloqueante = !config.isNaoBloqueante() # diferente de nao bloqueante aceita bloqueante ou ambos
26 26  
27 27 # id pode ser "1", "2", "3", "4" ou qualquer outro id criado para identificar erros
28   - # 1 - Core retornou um erro.
29   - # 2 - Vídeo inválido.
30   - # 3 - Legenda inválida.
31   - # 4 - Endpoint inválido.
  28 + # 1 ou 'core' - Core retornou um erro.
  29 + # 2 ou 'video' - Vídeo inválido.
  30 + # 3 ou 'legenda' - Legenda inválida.
  31 + # 4 ou 'endpoint' - Endpoint inválido.
  32 +
  33 + switch id
  34 + when 'core' then id = "1"
  35 + when 'video' then id = "2"
  36 + when 'legenda' then id = "3"
  37 + when 'endpoint' then id = "4"
  38 + else
  39 + throw new Error "ID inválido"
32 40  
33 41 if bloqueante
34 42 errors["resumo"]["bloqueante"][id] += inc
... ...
logsystem/main.js
... ... @@ -26,6 +26,22 @@
26 26 errors_log_path = "./logsystem/errors.log";
27 27 errors = JSON.parse(fs.readFileSync(errors_log_path, 'utf8'));
28 28 bloqueante = !config.isNaoBloqueante();
  29 + switch (id) {
  30 + case 'core':
  31 + id = "1";
  32 + break;
  33 + case 'video':
  34 + id = "2";
  35 + break;
  36 + case 'legenda':
  37 + id = "3";
  38 + break;
  39 + case 'endpoint':
  40 + id = "4";
  41 + break;
  42 + default:
  43 + throw new Error("ID inválido");
  44 + }
29 45 if (bloqueante) {
30 46 errors["resumo"]["bloqueante"][id] += inc;
31 47 } else {
... ...
logsystem/services.log
... ... @@ -3,12 +3,12 @@
3 3 "videos": {
4 4 "requisicoes": 20,
5 5 "traducoes": 11,
6   - "saude": 0
  6 + "saude": 1
7 7 },
8 8 "outros": {
9   - "requisicoes": 200,
10   - "traducoes": 176,
11   - "saude": 0
  9 + "requisicoes": 201,
  10 + "traducoes": 177,
  11 + "saude": 1
12 12 }
13 13 }
14 14 }
15 15 \ No newline at end of file
... ...
server.js
... ... @@ -54,21 +54,17 @@ app.post('/api', function(req, res) {
54 54 switch(req.body.servico) {
55 55 /* Tipo de Serviço: Texto */
56 56 case 'texto':
57   - logger.incrementService("outros", "requisicoes");
58 57 ep_texto.init(req, res, Request);
59 58 break;
60 59  
61 60 /* Tipo de Serviço: iOS */
62 61 case 'ios':
63   - logger.incrementService("outros", "requisicoes");
64 62 ep_ios.init(req, res);
65 63 break;
66 64  
67 65 /* Tipo de Serviço: Só o Vídeo */
68 66 case 'video':
69   - logger.incrementService("videos", "requisicoes");
70 67 ep_video.init(req, res);
71   - // logger.incrementService("videos", "traducoes");
72 68 break;
73 69  
74 70 case 'videornp':
... ... @@ -77,9 +73,7 @@ app.post('/api', function(req, res) {
77 73  
78 74 /* Tipo de Serviço: Só a Legenda */
79 75 case 'legenda':
80   - logger.incrementService("outros", "requisicoes");
81 76 ep_legenda.init(req, res);
82   -
83 77 break;
84 78  
85 79 /* Tipo de Serviço: Video + Legenda */
... ... @@ -143,12 +137,11 @@ app.get('/glosa', function(req, res) {
143 137 });
144 138  
145 139 // para testes apenas
146   -app.get('/incrementaerro', function(req, res) {
147   - // logger.incrementError("1", "detalhe do erro");
148   - // logger.incrementService("videos", "traducoes");
149   - res.send(200, "Incrementado");
150   -
151   -});
  140 +// app.get('/incrementaerro', function(req, res) {
  141 +// // logger.incrementError("1", "detalhe do erro");
  142 +// // logger.incrementService("videos", "traducoes");
  143 +// res.send(200, "Incrementado");
  144 +// });
152 145  
153 146 app.get('/limparfila', function(req, res) {
154 147  
... ...