Commit b30a7134bbb2a55afb3cd078c30968afdf773423

Authored by Cassio Cabral
1 parent 388f5560
Exists in master and in 1 other branch devel

adiciona suporte a queue

endpoints/ios.js
1 var parameters = require('../helpers/parameters'); 1 var parameters = require('../helpers/parameters');
2 var properties = require('../helpers/properties'); 2 var properties = require('../helpers/properties');
3 - 3 +var queue_helper = require('../helpers/queue');
4 var exec = require('child_process').exec, child; 4 var exec = require('child_process').exec, child;
5 var uuid = require('node-uuid'); 5 var uuid = require('node-uuid');
6 var fs = require('fs'); 6 var fs = require('fs');
  7 +var kue = require('kue'),
  8 + queue = kue.createQueue();
7 9
8 function init(req, res) { 10 function init(req, res) {
9 11
@@ -22,25 +24,37 @@ function init(req, res) { @@ -22,25 +24,37 @@ function init(req, res) {
22 } 24 }
23 25
24 /* Cria a linha de comando */ 26 /* Cria a linha de comando */
25 - var command_line = 'echo ' + req.body.texto + ' >> text_files/' + id + ' && mkdir uploads/' + id + ' && vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' text_files/' + 27 + var command_line = 'echo ' + req.body.texto + ' >> text_files/' + id + ' && mkdir uploads/' + id + ' && vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' text_files/' +
26 id + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + id + ' IOS > /tmp/core_log 2>&1'; 28 id + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + id + ' IOS > /tmp/core_log 2>&1';
27 29
28 - console.log(command_line) 30 + console.log(command_line);
29 31
30 /* Executa a linha de comando */ 32 /* Executa a linha de comando */
31 - child = exec(command_line, function(err, stdout, stderr) {  
32 - // [stdout] = vlibras-core output 33 + // child = exec(command_line, function(err, stdout, stderr) {
  34 + // // [stdout] = vlibras-core output
  35 + // });
  36 +
  37 + var child;
  38 + var job = queue.create('exec_command_line', {
  39 + title: 'Command Line for: ' + req.body.servico,
  40 + command_line: command_line
  41 + }).save();
  42 +
  43 + queue.process('exec_command_line', function(job, done){
  44 + child = queue_helper.exec_command_line(job.data.command_line, done);
33 }); 45 });
34 46
35 - /* Listener que dispara quando a requisição ao core finaliza */  
36 - child.on('close', function(code, signal){  
37 - res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4' });  
38 - }); 47 + job.on('complete', function() {
  48 + /* Listener que dispara quando a requisição ao core finaliza */
  49 + child.on('close', function(code, signal){
  50 + res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4' });
  51 + });
39 52
40 - /* Listener que dispara quando a requisição ao core da erro */  
41 - child.on('error', function(code, signal){  
42 - res.send(500, parameters.errorMessage('Erro na chamada ao core')); 53 + /* Listener que dispara quando a requisição ao core da erro */
  54 + child.on('error', function(code, signal){
  55 + res.send(500, parameters.errorMessage('Erro na chamada ao core'));
  56 + });
43 }); 57 });
44 -}; 58 +}
45 59
46 module.exports.init = init; 60 module.exports.init = init;
endpoints/legenda.js
1 var parameters = require('../helpers/parameters'); 1 var parameters = require('../helpers/parameters');
2 var properties = require('../helpers/properties'); 2 var properties = require('../helpers/properties');
3 - 3 +var queue_helper = require('../helpers/queue');
4 var exec = require('child_process').exec, child; 4 var exec = require('child_process').exec, child;
5 var uuid = require('node-uuid'); 5 var uuid = require('node-uuid');
6 var fs = require('fs'); 6 var fs = require('fs');
  7 +var kue = require('kue'),
  8 + queue = kue.createQueue();
7 9
8 function init(req, res) { 10 function init(req, res) {
9 11
@@ -42,21 +44,33 @@ function init(req, res) { @@ -42,21 +44,33 @@ function init(req, res) {
42 req.files.legenda.name + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + id; 44 req.files.legenda.name + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + id;
43 45
44 /* Executa a linha de comando */ 46 /* Executa a linha de comando */
45 - child = exec(command_line, function(err, stdout, stderr) {  
46 - // [stdout] = vlibras-core output  
47 - // console.log(stdout);  
48 - }); 47 + // child = exec(command_line, function(err, stdout, stderr) {
  48 + // // [stdout] = vlibras-core output
  49 + // // console.log(stdout);
  50 + // });
49 51
50 - /* Listener que dispara quando a requisição ao core finaliza */  
51 - child.on('close', function(code, signal){  
52 - res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.flv' });  
53 - }); 52 + var job = queue.create('exec_command_line', {
  53 + title: 'Command Line for: ' + req.body.servico,
  54 + command_line: command_line
  55 + }).save();
54 56
55 - /* Listener que dispara quando a requisição ao core da erro */  
56 - child.on('error', function(code, signal){  
57 - res.send(500, parameters.errorMessage('Erro na chamada ao core')); 57 + queue.process('exec_command_line', function(job, done){
  58 + child = queue_helper.exec_command_line(job.data.command_line, done);
58 }); 59 });
  60 +
  61 + job.on('complete', function() {
  62 + /* Listener que dispara quando a requisição ao core finaliza */
  63 + child.on('close', function(code, signal){
  64 + res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.flv' });
  65 + });
  66 +
  67 + /* Listener que dispara quando a requisição ao core da erro */
  68 + child.on('error', function(code, signal){
  69 + res.send(500, parameters.errorMessage('Erro na chamada ao core'));
  70 + });
  71 + })
  72 +
59 }); 73 });
60 }; 74 };
61 75
62 -module.exports.init = init;  
63 \ No newline at end of file 76 \ No newline at end of file
  77 +module.exports.init = init;
endpoints/texto.js
@@ -34,7 +34,8 @@ function init(req, res, Request) { @@ -34,7 +34,8 @@ function init(req, res, Request) {
34 34
35 db.create(request_object, function(result) { 35 db.create(request_object, function(result) {
36 if (result !== null) { 36 if (result !== null) {
37 - res.send(200, { 'status': 'Requisição ' + result.id + ' cadastrada com sucesso.'}); 37 + // TODO retornar ID do video
  38 + res.send(200, { 'status': 'Requisição ' + result.id + ' cadastrada com sucesso.', 'video_id': result.id});
38 } else { 39 } else {
39 res.send(500, { 'error': 'Erro na criação da requisição.'}); 40 res.send(500, { 'error': 'Erro na criação da requisição.'});
40 } 41 }
@@ -42,55 +43,36 @@ function init(req, res, Request) { @@ -42,55 +43,36 @@ function init(req, res, Request) {
42 43
43 /* Cria a linha de comando */ 44 /* Cria a linha de comando */
44 var command_line = 'echo ' + req.body.texto + ' >> text_files/' + id + ' && mkdir uploads/' + id + ' && vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' text_files/' + 45 var command_line = 'echo ' + req.body.texto + ' >> text_files/' + id + ' && mkdir uploads/' + id + ' && vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' text_files/' +
45 - id + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + id + ' WEB > /tmp/core_log 2>&1';  
46 -  
47 -console.log(command_line); 46 + id + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + id + ' Web > /tmp/core_log 2>&1';
48 47
  48 + console.log(command_line);
  49 + var child;
49 var job = queue.create('exec_command_line', { 50 var job = queue.create('exec_command_line', {
50 title: 'Command Line for: ' + req.body.servico, 51 title: 'Command Line for: ' + req.body.servico,
51 command_line: command_line 52 command_line: command_line
52 }).save(); 53 }).save();
53 54
54 -  
55 - /* Executa a linha de comando */  
56 - // child = exec(command_line, function(err, stdout, stderr) {  
57 - // // [stdout] = vlibras-core output  
58 - // });  
59 -  
60 -  
61 - // vai remover isso em cima e colocar isso aqui  
62 queue.process('exec_command_line', function(job, done){ 55 queue.process('exec_command_line', function(job, done){
63 - queue_helper.exec_command_line(job.data.command_line, done); 56 + child = queue_helper.exec_command_line(job.data.command_line, done);
64 }); 57 });
65 58
66 - job.on('complete', function(){  
67 - console.log("Job complete"); 59 + job.on('complete', function() {
  60 + /* Listener que dispara quando a requisição ao core finaliza */
  61 + child.on('close', function(code, signal) {
  62 + // res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.webm' });
68 db.update(request_object, 'Completed', function(result) { 63 db.update(request_object, 'Completed', function(result) {
69 - }); 64 + });
  65 + });
70 66
71 - }).on('failed', function(){  
72 - console.log("Job failed");  
73 - res.send(500, parameters.errorMessage('Erro na chamada ao core'));  
74 - db.update(request_object, 'Error', function(result) {  
75 - });  
76 - }).on('progress', function(progress){  
77 - process.stdout.write('\r job #' + job.id + ' ' + progress + '% complete');  
78 - }); 67 + /* Listener que dispara quando a requisição ao core da erro */
  68 + child.on('error', function(code, signal){
  69 + res.send(500, parameters.errorMessage('Erro na chamada ao core'));
  70 + db.update(request_object, 'Error', function(result) {
  71 + });
  72 + });
79 73
  74 + });
80 75
81 - /* Listener que dispara quando a requisição ao core finaliza */  
82 -// child.on('close', function(code, signal){  
83 -// // res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.webm' });  
84 -// db.update(request_object, 'Completed', function(result) {  
85 -// });  
86 -// });  
87 -//  
88 -// /* Listener que dispara quando a requisição ao core da erro */  
89 -// child.on('error', function(code, signal){  
90 -// res.send(500, parameters.errorMessage('Erro na chamada ao core'));  
91 -// db.update(request_object, 'Error', function(result) {  
92 -// });  
93 -// });  
94 } 76 }
95 77
96 module.exports.init = init; 78 module.exports.init = init;
endpoints/video.js
@@ -21,7 +21,7 @@ function init(req, res) { @@ -21,7 +21,7 @@ function init(req, res) {
21 res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos')); 21 res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos'));
22 return; 22 return;
23 } 23 }
24 - 24 +
25 process(req, res); 25 process(req, res);
26 }; 26 };
27 27
@@ -29,7 +29,7 @@ function process(req, res) { @@ -29,7 +29,7 @@ function process(req, res) {
29 var id = uuid.v4(); 29 var id = uuid.v4();
30 var folder = properties.uploads_folder + id; 30 var folder = properties.uploads_folder + id;
31 var locals = {}; 31 var locals = {};
32 - 32 +
33 async.series([ 33 async.series([
34 // Cria a pasta apropriada 34 // Cria a pasta apropriada
35 function(callback) { 35 function(callback) {
endpoints/video_legenda.js
@@ -21,7 +21,7 @@ function init(req, res) { @@ -21,7 +21,7 @@ function init(req, res) {
21 res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos')); 21 res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos'));
22 return; 22 return;
23 } 23 }
24 - 24 +
25 process(req, res); 25 process(req, res);
26 }; 26 };
27 27
@@ -29,7 +29,7 @@ function process(req, res) { @@ -29,7 +29,7 @@ function process(req, res) {
29 var id = uuid.v4(); 29 var id = uuid.v4();
30 var folder = properties.uploads_folder + id; 30 var folder = properties.uploads_folder + id;
31 var locals = {}; 31 var locals = {};
32 - 32 +
33 async.series([ 33 async.series([
34 // Cria a pasta apropriada 34 // Cria a pasta apropriada
35 function(callback) { 35 function(callback) {
helpers/core.js
1 var requests = require('../helpers/requests'); 1 var requests = require('../helpers/requests');
2 var properties = require('../helpers/properties'); 2 var properties = require('../helpers/properties');
3 - 3 +var queue_helper = require('../helpers/queue');
4 var url = require('url'); 4 var url = require('url');
5 var http = require('http'); 5 var http = require('http');
6 var querystring = require('querystring'); 6 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'),
  9 + queue = kue.createQueue();
8 10
9 function call(id, command_line, req, res) { 11 function call(id, command_line, req, res) {
10 /* Executa a linha de comando */ 12 /* Executa a linha de comando */
11 - child = exec(command_line, function(err, stdout, stderr) {  
12 - // [stdout] = vlibras-core output  
13 - // console.log('Err: ' + err);  
14 - // console.log('STDOUT: ' + stdout);  
15 - // console.log('STDERR: ' + stderr); 13 + // child = exec(command_line, function(err, stdout, stderr) {
  14 + // // [stdout] = vlibras-core output
  15 + // // console.log('Err: ' + err);
  16 + // // console.log('STDOUT: ' + stdout);
  17 + // // console.log('STDERR: ' + stderr);
  18 + // });
  19 +
  20 + var child,
  21 + job = queue.create('exec_command_line', {
  22 + title: 'Command Line for: ' + req.body.servico,
  23 + command_line: command_line
  24 + }).save();
  25 +
  26 + queue.process('exec_command_line', function(job, done){
  27 + child = queue_helper.exec_command_line(job.data.command_line, done);
  28 + if (child === undefined) {
  29 + throw "Erro ao conectar com o core";
  30 + }
16 }); 31 });
17 32
18 - // Se o callback não foi definido  
19 - if (req.body.callback === undefined) { 33 + job.on('complete', function() {
  34 + // Se o callback não foi definido
  35 + if (req.body.callback === undefined) {
20 36
21 - // Se a chamada foi feita com sucesso  
22 - child.on('close', function(code, signal) { 37 + // Se a chamada foi feita com sucesso
  38 + child.on('close', function(code, signal) {
23 39
24 - // Se o core executou com erro  
25 - if (code !== 0) {  
26 - throw "Erro no retorno do core. Código: " + code;  
27 - } 40 + // Se o core executou com erro
  41 + if (code !== 0) {
  42 + throw "Erro no retorno do core. Código: " + code;
  43 + }
28 44
29 - // Se o core executou normal  
30 - res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4'});  
31 - }); 45 + // Se o core executou normal
  46 + res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4'});
  47 + });
32 48
33 - // Se a chamada deu erro  
34 - child.on('error', function(code, signal) {  
35 - throw "Erro na chamada ao core";  
36 - }); 49 + // Se a chamada deu erro
  50 + child.on('error', function(code, signal) {
  51 + throw "Erro na chamada ao core";
  52 + });
37 53
38 54
39 - // Se o callback foi definido  
40 - } else { 55 + // Se o callback foi definido
  56 + } else {
41 57
42 - // Se a chamada foi feita com sucesso  
43 - child.on('close', function(code, signal) { 58 + // Se a chamada foi feita com sucesso
  59 + child.on('close', function(code, signal) {
44 60
45 - // Endereço do callback  
46 - var path = url.parse(req.body.callback); 61 + // Endereço do callback
  62 + var path = url.parse(req.body.callback);
47 63
48 - // Se o core executou com erro  
49 - if (code === 0) {  
50 - var data = querystring.stringify({ 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4', 'id' : id });  
51 - } else {  
52 - var data = querystring.stringify({ 'error': 'Erro no Core', 'code': code, 'id' : id });  
53 - } 64 + // Se o core executou com erro
  65 + if (code === 0) {
  66 + var data = querystring.stringify({ 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4', 'id' : id });
  67 + } else {
  68 + var data = querystring.stringify({ 'error': 'Erro no Core', 'code': code, 'id' : id });
  69 + }
54 70
55 - // Chama o callback  
56 - requests.postRequest(path, data);  
57 - }); 71 + // Chama o callback
  72 + requests.postRequest(path, data);
  73 + });
58 74
59 - // Se a chamada deu erro  
60 - child.on('error', function(code, signal) {  
61 - var path = url.parse(req.body.callback);  
62 - var data = querystring.stringify( { 'error': 'Erro na chamada ao core', 'code': code, 'id': id } ); 75 + // Se a chamada deu erro
  76 + child.on('error', function(code, signal) {
  77 + var path = url.parse(req.body.callback);
  78 + var data = querystring.stringify( { 'error': 'Erro na chamada ao core', 'code': code, 'id': id } );
63 79
64 - requests.postRequest(path, data);  
65 - }); 80 + requests.postRequest(path, data);
  81 + });
66 82
67 - // Retorno da primeira requisição  
68 - res.send(200, JSON.stringify({ 'id': id }));  
69 - } 83 + // Retorno da primeira requisição
  84 + res.send(200, JSON.stringify({ 'id': id }));
  85 + }
  86 + });
70 } 87 }
71 88
72 -module.exports.call = call;  
73 \ No newline at end of file 89 \ No newline at end of file
  90 +module.exports.call = call;
helpers/queue.js
1 var exec = require('child_process').exec, child; 1 var exec = require('child_process').exec, child;
2 2
3 exports.exec_command_line = function (command_line, callback) { 3 exports.exec_command_line = function (command_line, callback) {
4 - child = exec(command_line, function(err, stdout, stderr) {  
5 - // [stdout] = vlibras-core output  
6 - });  
7 - callback(); 4 +
  5 + child = exec(command_line, function(err, stdout, stderr) {
  6 + // console.log('Err: ' + err);
  7 + // console.log('STDOUT: ' + stdout);
  8 + // console.log('STDERR: ' + stderr);
  9 + });
  10 + //callback();
  11 + // if (child === undefined) {
  12 + // throw "Erro ao conectar com o core";
  13 + // }
  14 + child.on('error', function(code, signal) {
  15 + throw "Erro ao conectar com o core";
  16 + });
  17 + child.on('disconnect', function(code, signal) {
  18 + throw "Disconectado do core";
  19 + });
  20 + return child;
  21 +
8 }; 22 };
node_modules/ip/package.json
1 { 1 {
2 "name": "ip", 2 "name": "ip",
3 - "version": "0.3.2", 3 + "version": "0.3.3",
4 "author": { 4 "author": {
5 "name": "Fedor Indutny", 5 "name": "Fedor Indutny",
6 "email": "fedor@indutny.com" 6 "email": "fedor@indutny.com"
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 "homepage": "https://github.com/indutny/node-ip", 8 "homepage": "https://github.com/indutny/node-ip",
9 "repository": { 9 "repository": {
10 "type": "git", 10 "type": "git",
11 - "url": "http://github.com/indutny/node-ip.git" 11 + "url": "git+ssh://git@github.com/indutny/node-ip.git"
12 }, 12 },
13 "main": "lib/ip", 13 "main": "lib/ip",
14 "devDependencies": { 14 "devDependencies": {
@@ -17,15 +17,17 @@ @@ -17,15 +17,17 @@
17 "scripts": { 17 "scripts": {
18 "test": "mocha --reporter spec test/*-test.js" 18 "test": "mocha --reporter spec test/*-test.js"
19 }, 19 },
20 - "gitHead": "978e13d19531c9d9172044654df9dfb7ed116e45", 20 + "license": "MIT",
  21 + "gitHead": "7798e2d222718087863d8a5a99e3c02f3a30e2b9",
21 "description": "IP address utilities for node.js", 22 "description": "IP address utilities for node.js",
22 "bugs": { 23 "bugs": {
23 "url": "https://github.com/indutny/node-ip/issues" 24 "url": "https://github.com/indutny/node-ip/issues"
24 }, 25 },
25 - "_id": "ip@0.3.2",  
26 - "_shasum": "7d5ed34326688b36b6ab81f1865ea8266c28f0db", 26 + "_id": "ip@0.3.3",
  27 + "_shasum": "8ee8309e92f0b040d287f72efaca1a21702d3fb4",
27 "_from": "ip@latest", 28 "_from": "ip@latest",
28 - "_npmVersion": "1.4.28", 29 + "_npmVersion": "2.9.0",
  30 + "_nodeVersion": "2.0.0",
29 "_npmUser": { 31 "_npmUser": {
30 "name": "indutny", 32 "name": "indutny",
31 "email": "fedor@indutny.com" 33 "email": "fedor@indutny.com"
@@ -45,9 +47,9 @@ @@ -45,9 +47,9 @@
45 } 47 }
46 ], 48 ],
47 "dist": { 49 "dist": {
48 - "shasum": "7d5ed34326688b36b6ab81f1865ea8266c28f0db",  
49 - "tarball": "http://registry.npmjs.org/ip/-/ip-0.3.2.tgz" 50 + "shasum": "8ee8309e92f0b040d287f72efaca1a21702d3fb4",
  51 + "tarball": "http://registry.npmjs.org/ip/-/ip-0.3.3.tgz"
50 }, 52 },
51 "directories": {}, 53 "directories": {},
52 - "_resolved": "https://registry.npmjs.org/ip/-/ip-0.3.2.tgz" 54 + "_resolved": "https://registry.npmjs.org/ip/-/ip-0.3.3.tgz"
53 } 55 }
outfile 0 → 100644
vlibras-api 0 → 120000
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +vlibras-api
0 \ No newline at end of file 2 \ No newline at end of file