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 1 var parameters = require('../helpers/parameters');
2 2 var properties = require('../helpers/properties');
3   -
  3 +var queue_helper = require('../helpers/queue');
4 4 var exec = require('child_process').exec, child;
5 5 var uuid = require('node-uuid');
6 6 var fs = require('fs');
  7 +var kue = require('kue'),
  8 + queue = kue.createQueue();
7 9  
8 10 function init(req, res) {
9 11  
... ... @@ -22,25 +24,37 @@ function init(req, res) {
22 24 }
23 25  
24 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 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 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 60 module.exports.init = init;
... ...
endpoints/legenda.js
1 1 var parameters = require('../helpers/parameters');
2 2 var properties = require('../helpers/properties');
3   -
  3 +var queue_helper = require('../helpers/queue');
4 4 var exec = require('child_process').exec, child;
5 5 var uuid = require('node-uuid');
6 6 var fs = require('fs');
  7 +var kue = require('kue'),
  8 + queue = kue.createQueue();
7 9  
8 10 function init(req, res) {
9 11  
... ... @@ -42,21 +44,33 @@ function init(req, res) {
42 44 req.files.legenda.name + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + id;
43 45  
44 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 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 34  
35 35 db.create(request_object, function(result) {
36 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 39 } else {
39 40 res.send(500, { 'error': 'Erro na criação da requisição.'});
40 41 }
... ... @@ -42,55 +43,36 @@ function init(req, res, Request) {
42 43  
43 44 /* Cria a linha de comando */
44 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 50 var job = queue.create('exec_command_line', {
50 51 title: 'Command Line for: ' + req.body.servico,
51 52 command_line: command_line
52 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 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 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 78 module.exports.init = init;
... ...
endpoints/video.js
... ... @@ -21,7 +21,7 @@ function init(req, res) {
21 21 res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos'));
22 22 return;
23 23 }
24   -
  24 +
25 25 process(req, res);
26 26 };
27 27  
... ... @@ -29,7 +29,7 @@ function process(req, res) {
29 29 var id = uuid.v4();
30 30 var folder = properties.uploads_folder + id;
31 31 var locals = {};
32   -
  32 +
33 33 async.series([
34 34 // Cria a pasta apropriada
35 35 function(callback) {
... ...
endpoints/video_legenda.js
... ... @@ -21,7 +21,7 @@ function init(req, res) {
21 21 res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos'));
22 22 return;
23 23 }
24   -
  24 +
25 25 process(req, res);
26 26 };
27 27  
... ... @@ -29,7 +29,7 @@ function process(req, res) {
29 29 var id = uuid.v4();
30 30 var folder = properties.uploads_folder + id;
31 31 var locals = {};
32   -
  32 +
33 33 async.series([
34 34 // Cria a pasta apropriada
35 35 function(callback) {
... ...
helpers/core.js
1 1 var requests = require('../helpers/requests');
2 2 var properties = require('../helpers/properties');
3   -
  3 +var queue_helper = require('../helpers/queue');
4 4 var url = require('url');
5 5 var http = require('http');
6 6 var querystring = require('querystring');
7 7 var exec = require('child_process').exec, child;
  8 +var kue = require('kue'),
  9 + queue = kue.createQueue();
8 10  
9 11 function call(id, command_line, req, res) {
10 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 89 \ No newline at end of file
  90 +module.exports.call = call;
... ...
helpers/queue.js
1 1 var exec = require('child_process').exec, child;
2 2  
3 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 2 "name": "ip",
3   - "version": "0.3.2",
  3 + "version": "0.3.3",
4 4 "author": {
5 5 "name": "Fedor Indutny",
6 6 "email": "fedor@indutny.com"
... ... @@ -8,7 +8,7 @@
8 8 "homepage": "https://github.com/indutny/node-ip",
9 9 "repository": {
10 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 13 "main": "lib/ip",
14 14 "devDependencies": {
... ... @@ -17,15 +17,17 @@
17 17 "scripts": {
18 18 "test": "mocha --reporter spec test/*-test.js"
19 19 },
20   - "gitHead": "978e13d19531c9d9172044654df9dfb7ed116e45",
  20 + "license": "MIT",
  21 + "gitHead": "7798e2d222718087863d8a5a99e3c02f3a30e2b9",
21 22 "description": "IP address utilities for node.js",
22 23 "bugs": {
23 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 28 "_from": "ip@latest",
28   - "_npmVersion": "1.4.28",
  29 + "_npmVersion": "2.9.0",
  30 + "_nodeVersion": "2.0.0",
29 31 "_npmUser": {
30 32 "name": "indutny",
31 33 "email": "fedor@indutny.com"
... ... @@ -45,9 +47,9 @@
45 47 }
46 48 ],
47 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 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 @@
  1 +vlibras-api
0 2 \ No newline at end of file
... ...