diff --git a/endpoints/audio.js b/endpoints/audio.js index f327d9e..6668ee0 100644 --- a/endpoints/audio.js +++ b/endpoints/audio.js @@ -60,7 +60,6 @@ function process(req, res) { try { callCore(id, locals.audio, req, res); callback(); - logger.incrementService("outros", "traducoes"); } catch (err) { logger.incrementError("1", err); callback(err); @@ -101,7 +100,7 @@ function callCore(id, audio, req, res) { console.log("=== Core: " + command_line); - core.call(id, command_line, req, res); -}; + core.call(id, command_line, req, res, null, null, "outros"); +} module.exports.init = init; diff --git a/endpoints/ios.js b/endpoints/ios.js index dd5654e..5a32763 100644 --- a/endpoints/ios.js +++ b/endpoints/ios.js @@ -10,6 +10,8 @@ var logger = require('../logsystem/main.js'); function init(req, res) { + logger.incrementService("outros", "requisicoes"); + var id = uuid.v4(); /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */ diff --git a/endpoints/legenda.js b/endpoints/legenda.js index 47375d5..984b8a7 100644 --- a/endpoints/legenda.js +++ b/endpoints/legenda.js @@ -12,6 +12,9 @@ function init(req, res) { var id = uuid.v4(); + logger.incrementService("outros", "requisicoes"); + + /* 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')); @@ -69,7 +72,7 @@ function init(req, res) { /* 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')); - logger.incrementError("1", err); + logger.incrementError("legenda", err); }); }); diff --git a/endpoints/texto.js b/endpoints/texto.js index dca85bd..7509ae8 100644 --- a/endpoints/texto.js +++ b/endpoints/texto.js @@ -13,6 +13,8 @@ function init(req, res, Request) { var id = uuid.v4(); + logger.incrementService("outros", "requisicoes"); + /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */ if ((req.body.transparencia === '') || (req.body.texto === '') || (req.body.linguagem === '')) { @@ -43,7 +45,6 @@ function init(req, res, Request) { db.create(request_object, function(result) { if (result !== null) { res.send(200, { 'status': 'Requisição ' + result.id + ' cadastrada com sucesso.', 'video_id': result.id}); - logger.incrementService("outros", "traducoes"); } else { res.send(500, { 'error': 'Erro na criação da requisição.'}); } @@ -74,7 +75,7 @@ function init(req, res, Request) { /* 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')); - logger.incrementError("1", 'Erro na chamada ao core'); + logger.incrementError("core", 'Erro na chamada ao core'); db.update(request_object, 'Error', function(result) { }); }); diff --git a/endpoints/video.js b/endpoints/video.js index 018ee21..beb898d 100644 --- a/endpoints/video.js +++ b/endpoints/video.js @@ -11,6 +11,9 @@ var logger = require('../logsystem/main.js'); function init(req, res) { res.set("Content-Type", "application/json"); + logger.incrementService("videos", "requisicoes"); + + /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */ if ((req.body.posicao === '') || (req.body.tamanho === '') || (req.body.transparencia === '')) { res.send(500, parameters.errorMessage('O valor de algum parâmetro está vazio')); @@ -59,7 +62,6 @@ function process(req, res) { // Faz a chamada ao core try { callCore(id, locals.video, locals.subtitle, req, res); - logger.incrementService("videos", "traducoes"); callback(); } catch (err) { logger.incrementError("1", err); @@ -101,7 +103,7 @@ function callCore(id, video, subtitle, req, res) { console.log("=== Core: " + command_line); - core.call(id, command_line, req, res); + core.call(id, command_line, req, res, null, null, "videos"); } module.exports.init = init; diff --git a/endpoints/video_legenda.js b/endpoints/video_legenda.js index 9b54c9c..e36941b 100644 --- a/endpoints/video_legenda.js +++ b/endpoints/video_legenda.js @@ -60,7 +60,6 @@ function process(req, res) { try { callCore(id, locals.video, locals.subtitle, req, res); callback(); - logger.incrementService("outros", "traducoes"); } catch (err) { callback(err); logger.incrementError("1", err); @@ -107,7 +106,7 @@ function callCore(id, video, subtitle, req, res) { console.log("=== Core: " + command_line); - core.call(id, command_line, req, res); -}; + core.call(id, command_line, req, res, null, null, "outros"); +} module.exports.init = init; diff --git a/endpoints/videornp.js b/endpoints/videornp.js index 8f0bc42..3030e13 100644 --- a/endpoints/videornp.js +++ b/endpoints/videornp.js @@ -10,12 +10,16 @@ var async = require('async'); var _ = require('lodash'); var kue = require('kue'), queue = kue.createQueue(); +var logger = require('../logsystem/main.js'); + function init(req, res, Request) { res.set("Content-Type", "application/json"); if (_.isEmpty(req.body.legenda_url) && _.isEmpty(req.body.video_url)) { res.send(500, parameters.errorMessage('O valor do parâmetro legenda_url e video_url está vazio')); + logger.incrementError("video", "O valor do parâmetro legenda_url e video_url está vazio"); + logger.incrementError("legenda", "O valor do parâmetro legenda_url e video_url está vazio"); return; } @@ -65,7 +69,7 @@ function process(req, res, Request) { db.create(request_object, function(result) { if (result !== null) { - res.send(200, { 'id': result.id }); + res.send(200, { 'status': 'Requisição ' + result.id + ' cadastrada com sucesso.', 'video_id': result.id}); } else { res.send(500, { 'error': 'Erro na criação da requisição.'}); } @@ -98,7 +102,6 @@ function process(req, res, Request) { // Faz a chamada ao core try { - if (_.isEmpty(req.body.legenda_url)) { // video_url present callCore(id, locals.video, locals.subtitle, req, res, Request, request_object); } else { @@ -125,10 +128,18 @@ function downloadAndMoveFiles(folder, req, locals, callback) { function(callback) { if (_.isEmpty(req.body.legenda_url)) { // video_url present // Download video - files.downloadAndMoveVideo(folder, req, locals, callback); + try { + files.downloadAndMoveVideo(folder, req, locals, callback); + } catch (e) { + logger.incrementError("video", e); + } } else { // Download subtitle - files.downloadAndMoveSubtitle(folder, req, locals, callback); + try { + files.downloadAndMoveSubtitle(folder, req, locals, callback); + } catch (e) { + logger.incrementError("legenda", e); + } } } @@ -154,7 +165,7 @@ function callCore(id, video, subtitle, req, res, Request, request_object) { console.log("=== Core: " + command_line); console.log("ID: " + request_object.id); - core.call(id, command_line, req, res, Request, request_object); + core.call(id, command_line, req, res, Request, request_object, "videos"); } function callCoreSubtitle(id, subtitle, req, res, Request, request_object) { @@ -176,7 +187,7 @@ function callCoreSubtitle(id, subtitle, req, res, Request, request_object) { queue.process('exec_command_line' + id, function(job, done){ child = queue_helper.exec_command_line(job.data.command_line, done); }); - + job.on('complete', function() { /* Executa a linha de comando */ child = exec(command_line, function(err, stdout, stderr) { @@ -186,14 +197,34 @@ function callCoreSubtitle(id, subtitle, req, res, Request, request_object) { /* 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' }); + + // res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.flv' }); + + // Se o core executou com erro + if (code !== 0) { + db.update(Request, request_object.id, 'Error', function (result) {}); + console.log("Erro no retorno do core. Código: " + code); + logger.incrementError('core', "Erro no retorno do core. Código: " + code); + } else { + // Se o core executou normal + db.update(Request, request_object.id, 'Completed', function (result) {}); + res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4'}); + logger.incrementService("videos", "traducoes"); + } + }); + + }); /* 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')); + db.update(Request, request_object.id, 'Error', function (result) {}); + console.log("Erro no retorno do core. Código: " + code); + logger.incrementError('core', "Erro no retorno do core. Código: " + code); + res.send(500, parameters.errorMessage('Erro na chamada ao core')); }); - }); + + } diff --git a/helpers/core.js b/helpers/core.js index 53d7f03..1929c8f 100644 --- a/helpers/core.js +++ b/helpers/core.js @@ -10,7 +10,8 @@ var kue = require('kue'), var logger = require('../logsystem/main.js'); var db = require('../db/api'); -function call(id, command_line, req, res, Request, request_object) { +// req_type == "video" ou "outros" para ser usado no logger +function call(id, command_line, req, res, Request, request_object, req_type) { /* Executa a linha de comando */ // child = exec(command_line, function(err, stdout, stderr) { // // [stdout] = vlibras-core output @@ -19,6 +20,11 @@ function call(id, command_line, req, res, Request, request_object) { // // console.log('STDERR: ' + stderr); // }); + // para ser usado no logger + req_type = req_type === "videos" ? req_type : "outros"; + + logger.incrementService(req_type, "requisicoes"); + var child, job = queue.create('exec_command_line' + id, { title: 'Command Line for: ' + req.body.servico, @@ -27,9 +33,6 @@ function call(id, command_line, req, res, Request, request_object) { queue.process('exec_command_line' + id, function(job, done){ child = queue_helper.exec_command_line(job.data.command_line, done); - if (child === undefined) { - throw "Erro ao conectar com o core"; - } }); job.on('complete', function() { @@ -43,18 +46,20 @@ function call(id, command_line, req, res, Request, request_object) { if (code !== 0) { db.update(Request, request_object.id, 'Error', function (result) { }); - throw "Erro no retorno do core. Código: " + code; - } - - // Se o core executou normal - db.update(Request, request_object.id, 'Completed', function (result) { - }); - res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4'}); + console.log("Erro no retorno do core. Código: " + code); + logger.incrementError('core', "Erro no retorno do core. Código: " + code); + } else { + // Se o core executou normal + db.update(Request, request_object.id, 'Completed', function (result) {}); + res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4'}); + logger.incrementService(req_type, "traducoes"); + } }); // Se a chamada deu erro child.on('error', function(code, signal) { - throw "Erro na chamada ao core"; + console.log("Erro no retorno do core. Código: " + code); + logger.incrementError('core', "Erro no retorno do core. Código: " + code); }); @@ -63,17 +68,31 @@ function call(id, command_line, req, res, Request, request_object) { // Se a chamada foi feita com sucesso child.on('close', function(code, signal) { + var data; // Endereço do callback var path = url.parse(req.body.callback); // Se o core executou com erro - if (code === 0) { - var data = querystring.stringify({ 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4', 'id' : id }); - } else { - var data = querystring.stringify({ 'error': 'Erro no Core', 'code': code, 'id' : id }); - logger.incrementError("2"); - } + // if (code === 0) { + // data = querystring.stringify({ 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4', 'id' : id }); + // } else { + // data = querystring.stringify({ 'error': 'Erro no Core', 'code': code, 'id' : id }); + // logger.incrementError('core', "Erro no retorno do core. Código: " + code); + // } + + // Se o core executou com erro + if (code !== 0) { + db.update(Request, request_object.id, 'Error', function (result) { + }); + console.log("Erro no retorno do core. Código: " + code); + logger.incrementError('core', "Erro no retorno do core. Código: " + code); + } else { + // Se o core executou normal + db.update(Request, request_object.id, 'Completed', function (result) {}); + res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4'}); + logger.incrementService(req_type, "traducoes"); + } // Chama o callback requests.postRequest(path, data); @@ -83,7 +102,7 @@ function call(id, command_line, req, res, Request, request_object) { child.on('error', function(code, signal) { var path = url.parse(req.body.callback); var data = querystring.stringify( { 'error': 'Erro na chamada ao core', 'code': code, 'id': id } ); - logger.incrementError("2"); + logger.incrementError('core', "Erro no retorno do core. Código: " + code); requests.postRequest(path, data); }); diff --git a/helpers/queue.js b/helpers/queue.js index efd8818..040299e 100644 --- a/helpers/queue.js +++ b/helpers/queue.js @@ -9,10 +9,10 @@ exports.exec_command_line = function (command_line, done) { }); child.on('error', function(code, signal) { - throw "Erro ao conectar com o core"; + throw new Error("Erro ao conectar com o core"); }); child.on('disconnect', function(code, signal) { - throw "Disconectado do core"; + throw new Error("Disconectado do core"); }); done(); diff --git a/logsystem/main.coffee b/logsystem/main.coffee index db69dd0..af68688 100644 --- a/logsystem/main.coffee +++ b/logsystem/main.coffee @@ -25,10 +25,18 @@ exports.incrementError = (id, detalhe="", inc=1) -> bloqueante = !config.isNaoBloqueante() # diferente de nao bloqueante aceita bloqueante ou ambos # id pode ser "1", "2", "3", "4" ou qualquer outro id criado para identificar erros - # 1 - Core retornou um erro. - # 2 - Vídeo inválido. - # 3 - Legenda inválida. - # 4 - Endpoint inválido. + # 1 ou 'core' - Core retornou um erro. + # 2 ou 'video' - Vídeo inválido. + # 3 ou 'legenda' - Legenda inválida. + # 4 ou 'endpoint' - Endpoint inválido. + + switch id + when 'core' then id = "1" + when 'video' then id = "2" + when 'legenda' then id = "3" + when 'endpoint' then id = "4" + else + throw new Error "ID inválido" if bloqueante errors["resumo"]["bloqueante"][id] += inc diff --git a/logsystem/main.js b/logsystem/main.js index dd3d331..c22b955 100644 --- a/logsystem/main.js +++ b/logsystem/main.js @@ -26,6 +26,22 @@ errors_log_path = "./logsystem/errors.log"; errors = JSON.parse(fs.readFileSync(errors_log_path, 'utf8')); bloqueante = !config.isNaoBloqueante(); + switch (id) { + case 'core': + id = "1"; + break; + case 'video': + id = "2"; + break; + case 'legenda': + id = "3"; + break; + case 'endpoint': + id = "4"; + break; + default: + throw new Error("ID inválido"); + } if (bloqueante) { errors["resumo"]["bloqueante"][id] += inc; } else { diff --git a/logsystem/services.log b/logsystem/services.log index f9b4f0d..8be391c 100644 --- a/logsystem/services.log +++ b/logsystem/services.log @@ -3,12 +3,12 @@ "videos": { "requisicoes": 20, "traducoes": 11, - "saude": 0 + "saude": 1 }, "outros": { - "requisicoes": 200, - "traducoes": 176, - "saude": 0 + "requisicoes": 201, + "traducoes": 177, + "saude": 1 } } } \ No newline at end of file diff --git a/server.js b/server.js index 4c29335..0c4d524 100644 --- a/server.js +++ b/server.js @@ -54,21 +54,17 @@ app.post('/api', function(req, res) { switch(req.body.servico) { /* Tipo de Serviço: Texto */ case 'texto': - logger.incrementService("outros", "requisicoes"); ep_texto.init(req, res, Request); break; /* Tipo de Serviço: iOS */ case 'ios': - logger.incrementService("outros", "requisicoes"); ep_ios.init(req, res); break; /* Tipo de Serviço: Só o Vídeo */ case 'video': - logger.incrementService("videos", "requisicoes"); ep_video.init(req, res); - // logger.incrementService("videos", "traducoes"); break; case 'videornp': @@ -77,9 +73,7 @@ app.post('/api', function(req, res) { /* Tipo de Serviço: Só a Legenda */ case 'legenda': - logger.incrementService("outros", "requisicoes"); ep_legenda.init(req, res); - break; /* Tipo de Serviço: Video + Legenda */ @@ -143,12 +137,11 @@ app.get('/glosa', function(req, res) { }); // para testes apenas -app.get('/incrementaerro', function(req, res) { - // logger.incrementError("1", "detalhe do erro"); - // logger.incrementService("videos", "traducoes"); - res.send(200, "Incrementado"); - -}); +// app.get('/incrementaerro', function(req, res) { +// // logger.incrementError("1", "detalhe do erro"); +// // logger.incrementService("videos", "traducoes"); +// res.send(200, "Incrementado"); +// }); app.get('/limparfila', function(req, res) { -- libgit2 0.21.2