Commit 505a1abd4e55eb78f7e7065b0a708479df934ec6

Authored by Cassio Cabral
2 parents bfb66536 d74634b5
Exists in master and in 1 other branch devel

resolve problema no merge

config/main.js
@@ -46,6 +46,21 @@ exports.getCapacityLogPath = function () { @@ -46,6 +46,21 @@ exports.getCapacityLogPath = function () {
46 return this.getLogByName('capacity'); 46 return this.getLogByName('capacity');
47 }; 47 };
48 48
  49 +exports.isBloqueante = function () {
  50 + //1 para bloqueante, 2 para nao bloqueante e 3 pra aceitar os dois
  51 + return this.getServiceType() === 1;
  52 +};
  53 +
  54 +exports.isNaoBloqueante = function () {
  55 + //1 para bloqueante, 2 para nao bloqueante e 3 pra aceitar os dois
  56 + return this.getServiceType() === 2;
  57 +};
  58 +
  59 +exports.isAmbos = function () {
  60 + //1 para bloqueante, 2 para nao bloqueante e 3 pra aceitar os dois
  61 + return this.getServiceType() === 3;
  62 +};
  63 +
49 exports.canRunOnBox = function (service) { 64 exports.canRunOnBox = function (service) {
50 //1 para bloqueante, 2 para nao bloqueante e 3 pra aceitar os dois 65 //1 para bloqueante, 2 para nao bloqueante e 3 pra aceitar os dois
51 var serviceType = parseInt(this.getServiceType()); 66 var serviceType = parseInt(this.getServiceType());
endpoints/audio.js
@@ -6,6 +6,7 @@ var core = require('../helpers/core'); @@ -6,6 +6,7 @@ var core = require('../helpers/core');
6 var uuid = require('node-uuid'); 6 var uuid = require('node-uuid');
7 var mkdirp = require('mkdirp'); 7 var mkdirp = require('mkdirp');
8 var async = require('async'); 8 var async = require('async');
  9 +var logger = require('../logsystem/main.js');
9 10
10 function init(req, res) { 11 function init(req, res) {
11 res.set("Content-Type", "application/json"); 12 res.set("Content-Type", "application/json");
@@ -21,7 +22,7 @@ function init(req, res) { @@ -21,7 +22,7 @@ function init(req, res) {
21 res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos')); 22 res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos'));
22 return; 23 return;
23 } 24 }
24 - 25 +
25 process(req, res); 26 process(req, res);
26 }; 27 };
27 28
@@ -29,7 +30,7 @@ function process(req, res) { @@ -29,7 +30,7 @@ function process(req, res) {
29 var id = uuid.v4(); 30 var id = uuid.v4();
30 var folder = properties.uploads_folder + id; 31 var folder = properties.uploads_folder + id;
31 var locals = {}; 32 var locals = {};
32 - 33 +
33 async.series([ 34 async.series([
34 // Cria a pasta apropriada 35 // Cria a pasta apropriada
35 function(callback) { 36 function(callback) {
@@ -59,7 +60,9 @@ function process(req, res) { @@ -59,7 +60,9 @@ function process(req, res) {
59 try { 60 try {
60 callCore(id, locals.audio, req, res); 61 callCore(id, locals.audio, req, res);
61 callback(); 62 callback();
  63 + logger.incrementService("outros", "traducoes");
62 } catch (err) { 64 } catch (err) {
  65 + logger.incrementError("1", err);
63 callback(err); 66 callback(err);
64 } 67 }
65 } 68 }
endpoints/ios.js
@@ -6,6 +6,7 @@ var uuid = require('node-uuid'); @@ -6,6 +6,7 @@ var uuid = require('node-uuid');
6 var fs = require('fs'); 6 var fs = require('fs');
7 var kue = require('kue'), 7 var kue = require('kue'),
8 queue = kue.createQueue(); 8 queue = kue.createQueue();
  9 +var logger = require('../logsystem/main.js');
9 10
10 function init(req, res) { 11 function init(req, res) {
11 12
@@ -48,11 +49,13 @@ function init(req, res) { @@ -48,11 +49,13 @@ function init(req, res) {
48 /* Listener que dispara quando a requisição ao core finaliza */ 49 /* Listener que dispara quando a requisição ao core finaliza */
49 child.on('close', function(code, signal){ 50 child.on('close', function(code, signal){
50 res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4' }); 51 res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4' });
  52 + logger.incrementService("outros", "traducoes");
51 }); 53 });
52 54
53 /* Listener que dispara quando a requisição ao core da erro */ 55 /* Listener que dispara quando a requisição ao core da erro */
54 child.on('error', function(code, signal){ 56 child.on('error', function(code, signal){
55 res.send(500, parameters.errorMessage('Erro na chamada ao core')); 57 res.send(500, parameters.errorMessage('Erro na chamada ao core'));
  58 + logger.incrementError("1", err);
56 }); 59 });
57 }); 60 });
58 } 61 }
endpoints/legenda.js
@@ -6,6 +6,7 @@ var uuid = require('node-uuid'); @@ -6,6 +6,7 @@ var uuid = require('node-uuid');
6 var fs = require('fs'); 6 var fs = require('fs');
7 var kue = require('kue'), 7 var kue = require('kue'),
8 queue = kue.createQueue(); 8 queue = kue.createQueue();
  9 +var logger = require('../logsystem/main.js');
9 10
10 function init(req, res) { 11 function init(req, res) {
11 12
@@ -57,20 +58,22 @@ function init(req, res) { @@ -57,20 +58,22 @@ function init(req, res) {
57 queue.process('exec_command_line', function(job, done){ 58 queue.process('exec_command_line', function(job, done){
58 child = queue_helper.exec_command_line(job.data.command_line, done); 59 child = queue_helper.exec_command_line(job.data.command_line, done);
59 }); 60 });
60 - 61 +
61 job.on('complete', function() { 62 job.on('complete', function() {
62 /* Listener que dispara quando a requisição ao core finaliza */ 63 /* Listener que dispara quando a requisição ao core finaliza */
63 child.on('close', function(code, signal){ 64 child.on('close', function(code, signal){
64 res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.flv' }); 65 res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.flv' });
  66 + logger.incrementService("outros", "traducoes");
65 }); 67 });
66 68
67 /* Listener que dispara quando a requisição ao core da erro */ 69 /* Listener que dispara quando a requisição ao core da erro */
68 child.on('error', function(code, signal){ 70 child.on('error', function(code, signal){
69 res.send(500, parameters.errorMessage('Erro na chamada ao core')); 71 res.send(500, parameters.errorMessage('Erro na chamada ao core'));
  72 + logger.incrementError("1", err);
70 }); 73 });
71 - }) 74 + });
72 75
73 }); 76 });
74 -}; 77 +}
75 78
76 module.exports.init = init; 79 module.exports.init = init;
endpoints/texto.js
@@ -7,6 +7,7 @@ var uuid = require('node-uuid'); @@ -7,6 +7,7 @@ var uuid = require('node-uuid');
7 var fs = require('fs'); 7 var fs = require('fs');
8 var kue = require('kue'), 8 var kue = require('kue'),
9 queue = kue.createQueue(); 9 queue = kue.createQueue();
  10 +var logger = require('../logsystem/main.js');
10 11
11 function init(req, res, Request) { 12 function init(req, res, Request) {
12 13
@@ -34,8 +35,8 @@ function init(req, res, Request) { @@ -34,8 +35,8 @@ function init(req, res, Request) {
34 35
35 db.create(request_object, function(result) { 36 db.create(request_object, function(result) {
36 if (result !== null) { 37 if (result !== null) {
37 - // TODO retornar ID do video  
38 res.send(200, { 'status': 'Requisição ' + result.id + ' cadastrada com sucesso.', 'video_id': result.id}); 38 res.send(200, { 'status': 'Requisição ' + result.id + ' cadastrada com sucesso.', 'video_id': result.id});
  39 + logger.incrementService("outros", "traducoes");
39 } else { 40 } else {
40 res.send(500, { 'error': 'Erro na criação da requisição.'}); 41 res.send(500, { 'error': 'Erro na criação da requisição.'});
41 } 42 }
@@ -62,11 +63,13 @@ function init(req, res, Request) { @@ -62,11 +63,13 @@ function init(req, res, Request) {
62 // res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.webm' }); 63 // res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.webm' });
63 db.update(request_object, 'Completed', function(result) { 64 db.update(request_object, 'Completed', function(result) {
64 }); 65 });
  66 + logger.incrementService("outros", "traducoes");
65 }); 67 });
66 68
67 /* Listener que dispara quando a requisição ao core da erro */ 69 /* Listener que dispara quando a requisição ao core da erro */
68 child.on('error', function(code, signal){ 70 child.on('error', function(code, signal){
69 res.send(500, parameters.errorMessage('Erro na chamada ao core')); 71 res.send(500, parameters.errorMessage('Erro na chamada ao core'));
  72 + logger.incrementError("1", 'Erro na chamada ao core');
70 db.update(request_object, 'Error', function(result) { 73 db.update(request_object, 'Error', function(result) {
71 }); 74 });
72 }); 75 });
endpoints/video.js
@@ -6,6 +6,7 @@ var core = require('../helpers/core'); @@ -6,6 +6,7 @@ var core = require('../helpers/core');
6 var uuid = require('node-uuid'); 6 var uuid = require('node-uuid');
7 var mkdirp = require('mkdirp'); 7 var mkdirp = require('mkdirp');
8 var async = require('async'); 8 var async = require('async');
  9 +var logger = require('../logsystem/main.js');
9 10
10 function init(req, res) { 11 function init(req, res) {
11 res.set("Content-Type", "application/json"); 12 res.set("Content-Type", "application/json");
@@ -58,8 +59,10 @@ function process(req, res) { @@ -58,8 +59,10 @@ function process(req, res) {
58 // Faz a chamada ao core 59 // Faz a chamada ao core
59 try { 60 try {
60 callCore(id, locals.video, locals.subtitle, req, res); 61 callCore(id, locals.video, locals.subtitle, req, res);
  62 + logger.incrementService("videos", "traducoes");
61 callback(); 63 callback();
62 } catch (err) { 64 } catch (err) {
  65 + logger.incrementError("1", err);
63 callback(err); 66 callback(err);
64 } 67 }
65 } 68 }
endpoints/video_legenda.js
@@ -6,6 +6,7 @@ var core = require('../helpers/core'); @@ -6,6 +6,7 @@ var core = require('../helpers/core');
6 var uuid = require('node-uuid'); 6 var uuid = require('node-uuid');
7 var mkdirp = require('mkdirp'); 7 var mkdirp = require('mkdirp');
8 var async = require('async'); 8 var async = require('async');
  9 +var logger = require('../logsystem/main.js');
9 10
10 function init(req, res) { 11 function init(req, res) {
11 res.set("Content-Type", "application/json"); 12 res.set("Content-Type", "application/json");
@@ -23,7 +24,7 @@ function init(req, res) { @@ -23,7 +24,7 @@ function init(req, res) {
23 } 24 }
24 25
25 process(req, res); 26 process(req, res);
26 -}; 27 +}
27 28
28 function process(req, res) { 29 function process(req, res) {
29 var id = uuid.v4(); 30 var id = uuid.v4();
@@ -59,8 +60,10 @@ function process(req, res) { @@ -59,8 +60,10 @@ function process(req, res) {
59 try { 60 try {
60 callCore(id, locals.video, locals.subtitle, req, res); 61 callCore(id, locals.video, locals.subtitle, req, res);
61 callback(); 62 callback();
  63 + logger.incrementService("outros", "traducoes");
62 } catch (err) { 64 } catch (err) {
63 callback(err); 65 callback(err);
  66 + logger.incrementError("1", err);
64 } 67 }
65 } 68 }
66 ], function(err) { 69 ], function(err) {
helpers/core.js
@@ -7,6 +7,7 @@ var querystring = require('querystring'); @@ -7,6 +7,7 @@ var querystring = require('querystring');
7 var exec = require('child_process').exec, child; 7 var exec = require('child_process').exec, child;
8 var kue = require('kue'), 8 var kue = require('kue'),
9 queue = kue.createQueue(); 9 queue = kue.createQueue();
  10 +var logger = require('../logsystem/main.js');
10 11
11 function call(id, command_line, req, res) { 12 function call(id, command_line, req, res) {
12 /* Executa a linha de comando */ 13 /* Executa a linha de comando */
@@ -66,6 +67,7 @@ function call(id, command_line, req, res) { @@ -66,6 +67,7 @@ function call(id, command_line, req, res) {
66 var data = querystring.stringify({ 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4', 'id' : id }); 67 var data = querystring.stringify({ 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4', 'id' : id });
67 } else { 68 } else {
68 var data = querystring.stringify({ 'error': 'Erro no Core', 'code': code, 'id' : id }); 69 var data = querystring.stringify({ 'error': 'Erro no Core', 'code': code, 'id' : id });
  70 + logger.incrementError("2");
69 } 71 }
70 72
71 // Chama o callback 73 // Chama o callback
@@ -76,7 +78,7 @@ function call(id, command_line, req, res) { @@ -76,7 +78,7 @@ function call(id, command_line, req, res) {
76 child.on('error', function(code, signal) { 78 child.on('error', function(code, signal) {
77 var path = url.parse(req.body.callback); 79 var path = url.parse(req.body.callback);
78 var data = querystring.stringify( { 'error': 'Erro na chamada ao core', 'code': code, 'id': id } ); 80 var data = querystring.stringify( { 'error': 'Erro na chamada ao core', 'code': code, 'id': id } );
79 - 81 + logger.incrementError("2");
80 requests.postRequest(path, data); 82 requests.postRequest(path, data);
81 }); 83 });
82 84
helpers/files.js
1 var parameters = require('../helpers/parameters'); 1 var parameters = require('../helpers/parameters');
2 -  
3 var http = require('http'); 2 var http = require('http');
4 var fs = require('fs'); 3 var fs = require('fs');
  4 +var logger = require('../logsystem/main.js');
5 5
6 -/* 6 +/*
7 * Função que processa o vídeo (seja baixando, seja pegando o vídeo enviado) 7 * Função que processa o vídeo (seja baixando, seja pegando o vídeo enviado)
8 * Deve retornar um objeto contendo o nome e o caminho 8 * Deve retornar um objeto contendo o nome e o caminho
9 */ 9 */
@@ -15,12 +15,13 @@ function downloadAndMoveVideo(folder, req, locals, callback) { @@ -15,12 +15,13 @@ function downloadAndMoveVideo(folder, req, locals, callback) {
15 // Se a validação falhar 15 // Se a validação falhar
16 if (parameters.checkVideo(req.files.video.name) === false) { 16 if (parameters.checkVideo(req.files.video.name) === false) {
17 var error = 'Vídeo enviado com extensão inválida'; 17 var error = 'Vídeo enviado com extensão inválida';
  18 + logger.incrementError("2");
18 return callback(error); 19 return callback(error);
19 - } 20 + }
20 21
21 /* Move o vídeo submetido para a pasta com o seu ID correspondente */ 22 /* Move o vídeo submetido para a pasta com o seu ID correspondente */
22 try { 23 try {
23 - fs.renameSync(req.files.video.path, folder + '/' + req.files.video.name); 24 + fs.renameSync(req.files.video.path, folder + '/' + req.files.video.name);
24 } catch (err) { 25 } catch (err) {
25 callback("Erro ao mover o vídeo submetido: " + err); 26 callback("Erro ao mover o vídeo submetido: " + err);
26 } 27 }
@@ -70,9 +71,9 @@ function downloadAndMoveVideo(folder, req, locals, callback) { @@ -70,9 +71,9 @@ function downloadAndMoveVideo(folder, req, locals, callback) {
70 locals.video = { 71 locals.video = {
71 'path': path 72 'path': path
72 } 73 }
73 - 74 +
74 // Chama o callback para prosseguir execução 75 // Chama o callback para prosseguir execução
75 - callback(); 76 + callback();
76 }); 77 });
77 }); 78 });
78 79
@@ -89,7 +90,7 @@ function downloadAndMoveVideo(folder, req, locals, callback) { @@ -89,7 +90,7 @@ function downloadAndMoveVideo(folder, req, locals, callback) {
89 } 90 }
90 } 91 }
91 92
92 -/* 93 +/*
93 * Função que processa a legenda (seja baixando, seja pegando o vídeo enviado) 94 * Função que processa a legenda (seja baixando, seja pegando o vídeo enviado)
94 * Deve retornar um objeto contendo o nome e o caminho 95 * Deve retornar um objeto contendo o nome e o caminho
95 */ 96 */
@@ -101,12 +102,13 @@ function downloadAndMoveSubtitle(folder, req, locals, callback) { @@ -101,12 +102,13 @@ function downloadAndMoveSubtitle(folder, req, locals, callback) {
101 // Se a validação falhar 102 // Se a validação falhar
102 if (parameters.checkSubtitle(req.files.legenda.name) === false) { 103 if (parameters.checkSubtitle(req.files.legenda.name) === false) {
103 var error = 'Legenda enviado com extensão inválida'; 104 var error = 'Legenda enviado com extensão inválida';
  105 + logger.incrementError("3");
104 return callback(error); 106 return callback(error);
105 - } 107 + }
106 108
107 /* Move o vídeo submetido para a pasta com o seu ID correspondente */ 109 /* Move o vídeo submetido para a pasta com o seu ID correspondente */
108 try { 110 try {
109 - fs.renameSync(req.files.legenda.path, folder + '/' + req.files.legenda.name); 111 + fs.renameSync(req.files.legenda.path, folder + '/' + req.files.legenda.name);
110 } catch (err) { 112 } catch (err) {
111 callback("Erro ao mover a legenda submetida: " + err); 113 callback("Erro ao mover a legenda submetida: " + err);
112 } 114 }
@@ -156,9 +158,9 @@ function downloadAndMoveSubtitle(folder, req, locals, callback) { @@ -156,9 +158,9 @@ function downloadAndMoveSubtitle(folder, req, locals, callback) {
156 locals.subtitle = { 158 locals.subtitle = {
157 'path': path 159 'path': path
158 } 160 }
159 - 161 +
160 // Chama o callback para prosseguir execução 162 // Chama o callback para prosseguir execução
161 - callback(); 163 + callback();
162 }); 164 });
163 }); 165 });
164 166
@@ -184,11 +186,11 @@ function downloadAndMoveAudio(folder, req, locals, callback) { @@ -184,11 +186,11 @@ function downloadAndMoveAudio(folder, req, locals, callback) {
184 if (parameters.checkAudio(req.files.audio.name) === false) { 186 if (parameters.checkAudio(req.files.audio.name) === false) {
185 var error = 'Áudio enviado com extensão inválida'; 187 var error = 'Áudio enviado com extensão inválida';
186 return callback(error); 188 return callback(error);
187 - } 189 + }
188 190
189 /* Move o áudio submetido para a pasta com o seu ID correspondente */ 191 /* Move o áudio submetido para a pasta com o seu ID correspondente */
190 try { 192 try {
191 - fs.renameSync(req.files.audio.path, folder + '/' + req.files.audio.name); 193 + fs.renameSync(req.files.audio.path, folder + '/' + req.files.audio.name);
192 } catch (err) { 194 } catch (err) {
193 callback("Erro ao mover o áudio submetido: " + err); 195 callback("Erro ao mover o áudio submetido: " + err);
194 } 196 }
@@ -238,9 +240,9 @@ function downloadAndMoveAudio(folder, req, locals, callback) { @@ -238,9 +240,9 @@ function downloadAndMoveAudio(folder, req, locals, callback) {
238 locals.audio = { 240 locals.audio = {
239 'path': path 241 'path': path
240 } 242 }
241 - 243 +
242 // Chama o callback para prosseguir execução 244 // Chama o callback para prosseguir execução
243 - callback(); 245 + callback();
244 }); 246 });
245 }); 247 });
246 248
@@ -259,4 +261,4 @@ function downloadAndMoveAudio(folder, req, locals, callback) { @@ -259,4 +261,4 @@ function downloadAndMoveAudio(folder, req, locals, callback) {
259 261
260 module.exports.downloadAndMoveVideo = downloadAndMoveVideo; 262 module.exports.downloadAndMoveVideo = downloadAndMoveVideo;
261 module.exports.downloadAndMoveSubtitle = downloadAndMoveSubtitle; 263 module.exports.downloadAndMoveSubtitle = downloadAndMoveSubtitle;
262 -module.exports.downloadAndMoveAudio = downloadAndMoveAudio;  
263 \ No newline at end of file 264 \ No newline at end of file
  265 +module.exports.downloadAndMoveAudio = downloadAndMoveAudio;
logsystem/errors.log 0 → 100644
@@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
  1 +{
  2 + "resumo": {
  3 + "bloqueante": {
  4 + "1": 2,
  5 + "2": 0,
  6 + "3": 0,
  7 + "4": 1
  8 + },
  9 + "nao-bloqueante": {
  10 + "1": 0,
  11 + "2": 0,
  12 + "3": 0,
  13 + "4": 0
  14 + }
  15 + },
  16 + "detalhado": {
  17 + "1": "detalhe do erro",
  18 + "2": "detalhe",
  19 + "3": "detalhe",
  20 + "4": "Rota nao encontrada"
  21 + }
  22 +}
0 \ No newline at end of file 23 \ No newline at end of file
logsystem/errors_template.json 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +{
  2 + "resumo": {
  3 + "bloqueante": {
  4 + "1": 0,
  5 + "2": 0,
  6 + "3": 0,
  7 + "4": 0
  8 + },
  9 + "nao-bloqueante": {
  10 + "1": 0,
  11 + "2": 0,
  12 + "3": 0,
  13 + "4": 0
  14 + }
  15 + },
  16 + "detalhado": {
  17 + "1": "detalhe",
  18 + "2": "detalhe",
  19 + "3": "detalhe",
  20 + "4": "detalhe"
  21 +
  22 + }
  23 +}
logsystem/main.coffee
1 -config = require('./config/main.js') 1 +config = require('../config/main.js')
  2 +fs = require('fs')
  3 +kue = require('kue')
  4 +queue = kue.createQueue()
  5 +exports = module.exports = {}
  6 +
  7 +# 1 - Core retornou um erro.
  8 +# 2 - Vídeo inválido.
  9 +# 3 - Legenda inválida.
  10 +# 4 - Endpoint inválido.
  11 +
  12 +# params_box = JSON.parse(fs.readFileSync('./config/params_box.json', 'utf8'))
  13 +# errors = JSON.parse(fs.readFileSync('./logsystem/errors.log', 'utf8'))
  14 +# services = JSON.parse(fs.readFileSync('./logsystem/services.log', 'utf8'))
  15 +
  16 +
  17 +writeLog = (file, path) ->
  18 + fs.writeFileSync path, JSON.stringify(file, null, 4)
  19 +
  20 +
  21 +exports.incrementError = (id, detalhe="", inc=1) ->
  22 + errors_log_path = "./logsystem/errors.log"
  23 + errors = JSON.parse(fs.readFileSync(errors_log_path, 'utf8'))
  24 +
  25 + bloqueante = !config.isNaoBloqueante() # diferente de nao bloqueante aceita bloqueante ou ambos
  26 +
  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.
  32 +
  33 + if bloqueante
  34 + errors["resumo"]["bloqueante"][id] += inc
  35 + else
  36 + errors["resumo"]["nao-bloqueante"][id] += inc
  37 +
  38 + errors["detalhado"][id] = detalhe
  39 +
  40 + writeLog(errors, errors_log_path)
  41 +
  42 +exports.incrementService = (serviceType, type, inc=1) ->
  43 + services_log_path = "./logsystem/services.log"
  44 + services = JSON.parse(fs.readFileSync(services_log_path, 'utf8'))
  45 +
  46 + if serviceType == "videos"
  47 + services["tipo"]["videos"][type] += inc
  48 + else if serviceType == "outros"
  49 + services["tipo"]["outros"][type] += inc
  50 +
  51 +
  52 + writeLog(services, services_log_path)
  53 +
  54 +exports.updateHealth = (serviceType="outros", value=0) ->
  55 + services_log_path = "./logsystem/services.log"
  56 + services = JSON.parse(fs.readFileSync(services_log_path, 'utf8'))
  57 +
  58 + # if e else if pra excluir valores diferente desses dois
  59 + if serviceType == "videos"
  60 + services["tipo"]["videos"]["saude"] = value
  61 + else if serviceType == "outros"
  62 + services["tipo"]["outros"]["saude"] = value
  63 +
  64 + writeLog(services, services_log_path)
logsystem/main.js
1 (function() { 1 (function() {
2 - var config; 2 + var config, exports, fs, kue, queue, writeLog;
3 3
4 - config = require('./config/main.js'); 4 + config = require('../config/main.js');
  5 +
  6 + fs = require('fs');
  7 +
  8 + kue = require('kue');
  9 +
  10 + queue = kue.createQueue();
  11 +
  12 + exports = module.exports = {};
  13 +
  14 + writeLog = function(file, path) {
  15 + return fs.writeFileSync(path, JSON.stringify(file, null, 4));
  16 + };
  17 +
  18 + exports.incrementError = function(id, detalhe, inc) {
  19 + var bloqueante, errors, errors_log_path;
  20 + if (detalhe == null) {
  21 + detalhe = "";
  22 + }
  23 + if (inc == null) {
  24 + inc = 1;
  25 + }
  26 + errors_log_path = "./logsystem/errors.log";
  27 + errors = JSON.parse(fs.readFileSync(errors_log_path, 'utf8'));
  28 + bloqueante = !config.isNaoBloqueante();
  29 + if (bloqueante) {
  30 + errors["resumo"]["bloqueante"][id] += inc;
  31 + } else {
  32 + errors["resumo"]["nao-bloqueante"][id] += inc;
  33 + }
  34 + errors["detalhado"][id] = detalhe;
  35 + return writeLog(errors, errors_log_path);
  36 + };
  37 +
  38 + exports.incrementService = function(serviceType, type, inc) {
  39 + var services, services_log_path;
  40 + if (inc == null) {
  41 + inc = 1;
  42 + }
  43 + services_log_path = "./logsystem/services.log";
  44 + services = JSON.parse(fs.readFileSync(services_log_path, 'utf8'));
  45 + if (serviceType === "videos") {
  46 + services["tipo"]["videos"][type] += inc;
  47 + } else if (serviceType === "outros") {
  48 + services["tipo"]["outros"][type] += inc;
  49 + }
  50 + return writeLog(services, services_log_path);
  51 + };
  52 +
  53 + exports.updateHealth = function(serviceType, value) {
  54 + var services, services_log_path;
  55 + if (serviceType == null) {
  56 + serviceType = "outros";
  57 + }
  58 + if (value == null) {
  59 + value = 0;
  60 + }
  61 + services_log_path = "./logsystem/services.log";
  62 + services = JSON.parse(fs.readFileSync(services_log_path, 'utf8'));
  63 + if (serviceType === "videos") {
  64 + services["tipo"]["videos"]["saude"] = value;
  65 + } else if (serviceType === "outros") {
  66 + services["tipo"]["outros"]["saude"] = value;
  67 + }
  68 + return writeLog(services, services_log_path);
  69 + };
5 70
6 }).call(this); 71 }).call(this);
logsystem/services.log 0 → 100644
@@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
  1 +{
  2 + "tipo": {
  3 + "videos": {
  4 + "requisicoes": 0,
  5 + "traducoes": 0,
  6 + "saude": 0
  7 + },
  8 + "outros": {
  9 + "requisicoes": 88,
  10 + "traducoes": 88,
  11 + "saude": 1
  12 + }
  13 + }
  14 +}
0 \ No newline at end of file 15 \ No newline at end of file
logsystem/services_template.json 0 → 100644
@@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
  1 +{
  2 + "tipo": {
  3 + "videos": {
  4 + "requisicoes": 0,
  5 + "traducoes": 0,
  6 + "saude": 0
  7 + },
  8 + "outros": {
  9 + "requisicoes": 0,
  10 + "traducoes": 0,
  11 + "saude": 0
  12 + }
  13 + }
  14 +}
@@ -17,6 +17,8 @@ @@ -17,6 +17,8 @@
17 "ip": "latest", 17 "ip": "latest",
18 "mongoose": "^3.8.16", 18 "mongoose": "^3.8.16",
19 "python-shell": "0.0.3", 19 "python-shell": "0.0.3",
20 - "kue": "latest" 20 + "kue": "latest",
  21 + "unirest": "latest",
  22 + "cron": "latest"
21 } 23 }
22 } 24 }
@@ -16,8 +16,10 @@ var app = express(); @@ -16,8 +16,10 @@ var app = express();
16 var Request = require('./db/schemas/request').init(mongoose); 16 var Request = require('./db/schemas/request').init(mongoose);
17 var db = require('./db/api'); 17 var db = require('./db/api');
18 var config = require('./config/main.js'); 18 var config = require('./config/main.js');
  19 +var logger = require('./logsystem/main.js');
19 var kue = require('kue'); 20 var kue = require('kue');
20 var queue = kue.createQueue(); 21 var queue = kue.createQueue();
  22 +var unirest = require('unirest');
21 23
22 app.use(express.static(path.join(__dirname, '/videos'))); 24 app.use(express.static(path.join(__dirname, '/videos')));
23 app.use(express.bodyParser({ keepExtensions: true, uploadDir: path.join(__dirname, '/uploads') })); 25 app.use(express.bodyParser({ keepExtensions: true, uploadDir: path.join(__dirname, '/uploads') }));
@@ -39,30 +41,37 @@ app.post('/api', function(req, res) { @@ -39,30 +41,37 @@ app.post('/api', function(req, res) {
39 switch(req.body.servico) { 41 switch(req.body.servico) {
40 /* Tipo de Serviço: Texto */ 42 /* Tipo de Serviço: Texto */
41 case 'texto': 43 case 'texto':
  44 + logger.incrementService("outros", "requisicoes");
42 ep_texto.init(req, res, Request); 45 ep_texto.init(req, res, Request);
43 break; 46 break;
44 47
45 /* Tipo de Serviço: iOS */ 48 /* Tipo de Serviço: iOS */
46 case 'ios': 49 case 'ios':
  50 + logger.incrementService("outros", "requisicoes");
47 ep_ios.init(req, res); 51 ep_ios.init(req, res);
48 break; 52 break;
49 53
50 /* Tipo de Serviço: Só o Vídeo */ 54 /* Tipo de Serviço: Só o Vídeo */
51 case 'video': 55 case 'video':
  56 + logger.incrementService("videos", "requisicoes");
52 ep_video.init(req, res); 57 ep_video.init(req, res);
  58 + // logger.incrementService("videos", "traducoes");
53 break; 59 break;
54 60
55 case 'videornp': 61 case 'videornp':
56 ep_video_rnp.init(req, res, Request); 62 ep_video_rnp.init(req, res, Request);
57 - break; 63 + break;
58 64
59 /* Tipo de Serviço: Só a Legenda */ 65 /* Tipo de Serviço: Só a Legenda */
60 case 'legenda': 66 case 'legenda':
  67 + logger.incrementService("outros", "requisicoes");
61 ep_legenda.init(req, res); 68 ep_legenda.init(req, res);
  69 +
62 break; 70 break;
63 71
64 /* Tipo de Serviço: Video + Legenda */ 72 /* Tipo de Serviço: Video + Legenda */
65 case 'video-legenda': 73 case 'video-legenda':
  74 + logger.incrementService("outros", "requisicoes");
66 ep_video_legenda.init(req, res); 75 ep_video_legenda.init(req, res);
67 break; 76 break;
68 77
@@ -120,6 +129,14 @@ app.get('/glosa', function(req, res) { @@ -120,6 +129,14 @@ app.get('/glosa', function(req, res) {
120 }); 129 });
121 }); 130 });
122 131
  132 +// para testes apenas
  133 +app.get('/incrementaerro', function(req, res) {
  134 + // logger.incrementError("1", "detalhe do erro");
  135 + // logger.incrementService("videos", "traducoes");
  136 + res.send(200, "Incrementado");
  137 +
  138 +});
  139 +
123 app.get('/limparfila', function(req, res) { 140 app.get('/limparfila', function(req, res) {
124 141
125 // graceful shutdown 142 // graceful shutdown
@@ -174,6 +191,30 @@ app.get('/limparfila', function(req, res) { @@ -174,6 +191,30 @@ app.get('/limparfila', function(req, res) {
174 res.send(200, "Fila limpa"); 191 res.send(200, "Fila limpa");
175 }); 192 });
176 193
  194 +// precisa ficar no final caso o request n bata com nenhuma rota anterior
  195 +app.get('/*', function(req, res){
  196 + logger.incrementError("4", "Rota nao encontrada");
  197 + res.send(404, { 'status': 'Rota nao encontrada' } );
  198 +});
  199 +
177 app.listen(properties.port, properties.host, function(){ 200 app.listen(properties.port, properties.host, function(){
178 console.log('Server running on ' + properties.host + ':' + properties.port); 201 console.log('Server running on ' + properties.host + ':' + properties.port);
179 }); 202 });
  203 +
  204 +
  205 +
  206 +var CronJob = require('cron').CronJob;
  207 +// '* * * * * *' == a cada 1 segundo
  208 +new CronJob('* * * * * *', function() {
  209 + unirest.post('http://localhost:5000/api')
  210 + .header('Accept', 'application/json')
  211 + .send({ "servico": "texto", "transparencia": "opaco", "texto": "texto teste" })
  212 + .end(function (response) {
  213 + console.log(response.status);
  214 + if(response.status === 200){
  215 + logger.updateHealth("outros", 1);
  216 + } else {
  217 + logger.updateHealth();
  218 + }
  219 + });
  220 +}, null, true); // no lugar do null pode ser uma funcao pra executar quando parar