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 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 64 exports.canRunOnBox = function (service) {
50 65 //1 para bloqueante, 2 para nao bloqueante e 3 pra aceitar os dois
51 66 var serviceType = parseInt(this.getServiceType());
... ...
endpoints/audio.js
... ... @@ -6,6 +6,7 @@ var core = require('../helpers/core');
6 6 var uuid = require('node-uuid');
7 7 var mkdirp = require('mkdirp');
8 8 var async = require('async');
  9 +var logger = require('../logsystem/main.js');
9 10  
10 11 function init(req, res) {
11 12 res.set("Content-Type", "application/json");
... ... @@ -21,7 +22,7 @@ function init(req, res) {
21 22 res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos'));
22 23 return;
23 24 }
24   -
  25 +
25 26 process(req, res);
26 27 };
27 28  
... ... @@ -29,7 +30,7 @@ function process(req, res) {
29 30 var id = uuid.v4();
30 31 var folder = properties.uploads_folder + id;
31 32 var locals = {};
32   -
  33 +
33 34 async.series([
34 35 // Cria a pasta apropriada
35 36 function(callback) {
... ... @@ -59,7 +60,9 @@ function process(req, res) {
59 60 try {
60 61 callCore(id, locals.audio, req, res);
61 62 callback();
  63 + logger.incrementService("outros", "traducoes");
62 64 } catch (err) {
  65 + logger.incrementError("1", err);
63 66 callback(err);
64 67 }
65 68 }
... ...
endpoints/ios.js
... ... @@ -6,6 +6,7 @@ var uuid = require('node-uuid');
6 6 var fs = require('fs');
7 7 var kue = require('kue'),
8 8 queue = kue.createQueue();
  9 +var logger = require('../logsystem/main.js');
9 10  
10 11 function init(req, res) {
11 12  
... ... @@ -48,11 +49,13 @@ function init(req, res) {
48 49 /* Listener que dispara quando a requisição ao core finaliza */
49 50 child.on('close', function(code, signal){
50 51 res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4' });
  52 + logger.incrementService("outros", "traducoes");
51 53 });
52 54  
53 55 /* Listener que dispara quando a requisição ao core da erro */
54 56 child.on('error', function(code, signal){
55 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 var fs = require('fs');
7 7 var kue = require('kue'),
8 8 queue = kue.createQueue();
  9 +var logger = require('../logsystem/main.js');
9 10  
10 11 function init(req, res) {
11 12  
... ... @@ -57,20 +58,22 @@ function init(req, res) {
57 58 queue.process('exec_command_line', function(job, done){
58 59 child = queue_helper.exec_command_line(job.data.command_line, done);
59 60 });
60   -
  61 +
61 62 job.on('complete', function() {
62 63 /* Listener que dispara quando a requisição ao core finaliza */
63 64 child.on('close', function(code, signal){
64 65 res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.flv' });
  66 + logger.incrementService("outros", "traducoes");
65 67 });
66 68  
67 69 /* Listener que dispara quando a requisição ao core da erro */
68 70 child.on('error', function(code, signal){
69 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 79 module.exports.init = init;
... ...
endpoints/texto.js
... ... @@ -7,6 +7,7 @@ var uuid = require('node-uuid');
7 7 var fs = require('fs');
8 8 var kue = require('kue'),
9 9 queue = kue.createQueue();
  10 +var logger = require('../logsystem/main.js');
10 11  
11 12 function init(req, res, Request) {
12 13  
... ... @@ -34,8 +35,8 @@ function init(req, res, Request) {
34 35  
35 36 db.create(request_object, function(result) {
36 37 if (result !== null) {
37   - // TODO retornar ID do video
38 38 res.send(200, { 'status': 'Requisição ' + result.id + ' cadastrada com sucesso.', 'video_id': result.id});
  39 + logger.incrementService("outros", "traducoes");
39 40 } else {
40 41 res.send(500, { 'error': 'Erro na criação da requisição.'});
41 42 }
... ... @@ -62,11 +63,13 @@ function init(req, res, Request) {
62 63 // res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.webm' });
63 64 db.update(request_object, 'Completed', function(result) {
64 65 });
  66 + logger.incrementService("outros", "traducoes");
65 67 });
66 68  
67 69 /* Listener que dispara quando a requisição ao core da erro */
68 70 child.on('error', function(code, signal){
69 71 res.send(500, parameters.errorMessage('Erro na chamada ao core'));
  72 + logger.incrementError("1", 'Erro na chamada ao core');
70 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 var uuid = require('node-uuid');
7 7 var mkdirp = require('mkdirp');
8 8 var async = require('async');
  9 +var logger = require('../logsystem/main.js');
9 10  
10 11 function init(req, res) {
11 12 res.set("Content-Type", "application/json");
... ... @@ -58,8 +59,10 @@ function process(req, res) {
58 59 // Faz a chamada ao core
59 60 try {
60 61 callCore(id, locals.video, locals.subtitle, req, res);
  62 + logger.incrementService("videos", "traducoes");
61 63 callback();
62 64 } catch (err) {
  65 + logger.incrementError("1", err);
63 66 callback(err);
64 67 }
65 68 }
... ...
endpoints/video_legenda.js
... ... @@ -6,6 +6,7 @@ var core = require('../helpers/core');
6 6 var uuid = require('node-uuid');
7 7 var mkdirp = require('mkdirp');
8 8 var async = require('async');
  9 +var logger = require('../logsystem/main.js');
9 10  
10 11 function init(req, res) {
11 12 res.set("Content-Type", "application/json");
... ... @@ -23,7 +24,7 @@ function init(req, res) {
23 24 }
24 25  
25 26 process(req, res);
26   -};
  27 +}
27 28  
28 29 function process(req, res) {
29 30 var id = uuid.v4();
... ... @@ -59,8 +60,10 @@ function process(req, res) {
59 60 try {
60 61 callCore(id, locals.video, locals.subtitle, req, res);
61 62 callback();
  63 + logger.incrementService("outros", "traducoes");
62 64 } catch (err) {
63 65 callback(err);
  66 + logger.incrementError("1", err);
64 67 }
65 68 }
66 69 ], function(err) {
... ...
helpers/core.js
... ... @@ -7,6 +7,7 @@ var querystring = require('querystring');
7 7 var exec = require('child_process').exec, child;
8 8 var kue = require('kue'),
9 9 queue = kue.createQueue();
  10 +var logger = require('../logsystem/main.js');
10 11  
11 12 function call(id, command_line, req, res) {
12 13 /* Executa a linha de comando */
... ... @@ -66,6 +67,7 @@ function call(id, command_line, req, res) {
66 67 var data = querystring.stringify({ 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4', 'id' : id });
67 68 } else {
68 69 var data = querystring.stringify({ 'error': 'Erro no Core', 'code': code, 'id' : id });
  70 + logger.incrementError("2");
69 71 }
70 72  
71 73 // Chama o callback
... ... @@ -76,7 +78,7 @@ function call(id, command_line, req, res) {
76 78 child.on('error', function(code, signal) {
77 79 var path = url.parse(req.body.callback);
78 80 var data = querystring.stringify( { 'error': 'Erro na chamada ao core', 'code': code, 'id': id } );
79   -
  81 + logger.incrementError("2");
80 82 requests.postRequest(path, data);
81 83 });
82 84  
... ...
helpers/files.js
1 1 var parameters = require('../helpers/parameters');
2   -
3 2 var http = require('http');
4 3 var fs = require('fs');
  4 +var logger = require('../logsystem/main.js');
5 5  
6   -/*
  6 +/*
7 7 * Função que processa o vídeo (seja baixando, seja pegando o vídeo enviado)
8 8 * Deve retornar um objeto contendo o nome e o caminho
9 9 */
... ... @@ -15,12 +15,13 @@ function downloadAndMoveVideo(folder, req, locals, callback) {
15 15 // Se a validação falhar
16 16 if (parameters.checkVideo(req.files.video.name) === false) {
17 17 var error = 'Vídeo enviado com extensão inválida';
  18 + logger.incrementError("2");
18 19 return callback(error);
19   - }
  20 + }
20 21  
21 22 /* Move o vídeo submetido para a pasta com o seu ID correspondente */
22 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 25 } catch (err) {
25 26 callback("Erro ao mover o vídeo submetido: " + err);
26 27 }
... ... @@ -70,9 +71,9 @@ function downloadAndMoveVideo(folder, req, locals, callback) {
70 71 locals.video = {
71 72 'path': path
72 73 }
73   -
  74 +
74 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 90 }
90 91 }
91 92  
92   -/*
  93 +/*
93 94 * Função que processa a legenda (seja baixando, seja pegando o vídeo enviado)
94 95 * Deve retornar um objeto contendo o nome e o caminho
95 96 */
... ... @@ -101,12 +102,13 @@ function downloadAndMoveSubtitle(folder, req, locals, callback) {
101 102 // Se a validação falhar
102 103 if (parameters.checkSubtitle(req.files.legenda.name) === false) {
103 104 var error = 'Legenda enviado com extensão inválida';
  105 + logger.incrementError("3");
104 106 return callback(error);
105   - }
  107 + }
106 108  
107 109 /* Move o vídeo submetido para a pasta com o seu ID correspondente */
108 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 112 } catch (err) {
111 113 callback("Erro ao mover a legenda submetida: " + err);
112 114 }
... ... @@ -156,9 +158,9 @@ function downloadAndMoveSubtitle(folder, req, locals, callback) {
156 158 locals.subtitle = {
157 159 'path': path
158 160 }
159   -
  161 +
160 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 186 if (parameters.checkAudio(req.files.audio.name) === false) {
185 187 var error = 'Áudio enviado com extensão inválida';
186 188 return callback(error);
187   - }
  189 + }
188 190  
189 191 /* Move o áudio submetido para a pasta com o seu ID correspondente */
190 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 194 } catch (err) {
193 195 callback("Erro ao mover o áudio submetido: " + err);
194 196 }
... ... @@ -238,9 +240,9 @@ function downloadAndMoveAudio(folder, req, locals, callback) {
238 240 locals.audio = {
239 241 'path': path
240 242 }
241   -
  243 +
242 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 261  
260 262 module.exports.downloadAndMoveVideo = downloadAndMoveVideo;
261 263 module.exports.downloadAndMoveSubtitle = downloadAndMoveSubtitle;
262   -module.exports.downloadAndMoveAudio = downloadAndMoveAudio;
263 264 \ No newline at end of file
  265 +module.exports.downloadAndMoveAudio = downloadAndMoveAudio;
... ...
logsystem/errors.log 0 → 100644
... ... @@ -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 23 \ No newline at end of file
... ...
logsystem/errors_template.json 0 → 100644
... ... @@ -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 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 71 }).call(this);
... ...
logsystem/services.log 0 → 100644
... ... @@ -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 15 \ No newline at end of file
... ...
logsystem/services_template.json 0 → 100644
... ... @@ -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 +}
... ...
package.json
... ... @@ -17,6 +17,8 @@
17 17 "ip": "latest",
18 18 "mongoose": "^3.8.16",
19 19 "python-shell": "0.0.3",
20   - "kue": "latest"
  20 + "kue": "latest",
  21 + "unirest": "latest",
  22 + "cron": "latest"
21 23 }
22 24 }
... ...
server.js
... ... @@ -16,8 +16,10 @@ var app = express();
16 16 var Request = require('./db/schemas/request').init(mongoose);
17 17 var db = require('./db/api');
18 18 var config = require('./config/main.js');
  19 +var logger = require('./logsystem/main.js');
19 20 var kue = require('kue');
20 21 var queue = kue.createQueue();
  22 +var unirest = require('unirest');
21 23  
22 24 app.use(express.static(path.join(__dirname, '/videos')));
23 25 app.use(express.bodyParser({ keepExtensions: true, uploadDir: path.join(__dirname, '/uploads') }));
... ... @@ -39,30 +41,37 @@ app.post('/api', function(req, res) {
39 41 switch(req.body.servico) {
40 42 /* Tipo de Serviço: Texto */
41 43 case 'texto':
  44 + logger.incrementService("outros", "requisicoes");
42 45 ep_texto.init(req, res, Request);
43 46 break;
44 47  
45 48 /* Tipo de Serviço: iOS */
46 49 case 'ios':
  50 + logger.incrementService("outros", "requisicoes");
47 51 ep_ios.init(req, res);
48 52 break;
49 53  
50 54 /* Tipo de Serviço: Só o Vídeo */
51 55 case 'video':
  56 + logger.incrementService("videos", "requisicoes");
52 57 ep_video.init(req, res);
  58 + // logger.incrementService("videos", "traducoes");
53 59 break;
54 60  
55 61 case 'videornp':
56 62 ep_video_rnp.init(req, res, Request);
57   - break;
  63 + break;
58 64  
59 65 /* Tipo de Serviço: Só a Legenda */
60 66 case 'legenda':
  67 + logger.incrementService("outros", "requisicoes");
61 68 ep_legenda.init(req, res);
  69 +
62 70 break;
63 71  
64 72 /* Tipo de Serviço: Video + Legenda */
65 73 case 'video-legenda':
  74 + logger.incrementService("outros", "requisicoes");
66 75 ep_video_legenda.init(req, res);
67 76 break;
68 77  
... ... @@ -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 140 app.get('/limparfila', function(req, res) {
124 141  
125 142 // graceful shutdown
... ... @@ -174,6 +191,30 @@ app.get('/limparfila', function(req, res) {
174 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 200 app.listen(properties.port, properties.host, function(){
178 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
... ...