diff --git a/endpoints/ios.js b/endpoints/ios.js index c229367..88b12ae 100644 --- a/endpoints/ios.js +++ b/endpoints/ios.js @@ -1,9 +1,11 @@ var parameters = require('../helpers/parameters'); var properties = require('../helpers/properties'); - +var queue_helper = require('../helpers/queue'); var exec = require('child_process').exec, child; var uuid = require('node-uuid'); var fs = require('fs'); +var kue = require('kue'), + queue = kue.createQueue(); function init(req, res) { @@ -22,25 +24,37 @@ function init(req, res) { } /* Cria a linha de comando */ - 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/' + + 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/' + id + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + id + ' IOS > /tmp/core_log 2>&1'; - console.log(command_line) + console.log(command_line); /* Executa a linha de comando */ - child = exec(command_line, function(err, stdout, stderr) { - // [stdout] = vlibras-core output + // child = exec(command_line, function(err, stdout, stderr) { + // // [stdout] = vlibras-core output + // }); + + var child; + var job = queue.create('exec_command_line', { + title: 'Command Line for: ' + req.body.servico, + command_line: command_line + }).save(); + + queue.process('exec_command_line', function(job, done){ + child = queue_helper.exec_command_line(job.data.command_line, done); }); - /* 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 + '.mp4' }); - }); + job.on('complete', function() { + /* 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 + '.mp4' }); + }); - /* 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')); + /* 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')); + }); }); -}; +} module.exports.init = init; diff --git a/endpoints/legenda.js b/endpoints/legenda.js index 0d48898..fe29e7a 100644 --- a/endpoints/legenda.js +++ b/endpoints/legenda.js @@ -1,9 +1,11 @@ var parameters = require('../helpers/parameters'); var properties = require('../helpers/properties'); - +var queue_helper = require('../helpers/queue'); var exec = require('child_process').exec, child; var uuid = require('node-uuid'); var fs = require('fs'); +var kue = require('kue'), + queue = kue.createQueue(); function init(req, res) { @@ -42,21 +44,33 @@ function init(req, res) { req.files.legenda.name + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + id; /* Executa a linha de comando */ - child = exec(command_line, function(err, stdout, stderr) { - // [stdout] = vlibras-core output - // console.log(stdout); - }); + // child = exec(command_line, function(err, stdout, stderr) { + // // [stdout] = vlibras-core output + // // console.log(stdout); + // }); - /* 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' }); - }); + var job = queue.create('exec_command_line', { + title: 'Command Line for: ' + req.body.servico, + command_line: command_line + }).save(); - /* 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')); + queue.process('exec_command_line', function(job, done){ + child = queue_helper.exec_command_line(job.data.command_line, done); }); + + job.on('complete', function() { + /* 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' }); + }); + + /* 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')); + }); + }) + }); }; -module.exports.init = init; \ No newline at end of file +module.exports.init = init; diff --git a/endpoints/texto.js b/endpoints/texto.js index f4e2c58..25d54df 100755 --- a/endpoints/texto.js +++ b/endpoints/texto.js @@ -34,7 +34,8 @@ 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.'}); + // TODO retornar ID do video + 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.'}); } @@ -42,55 +43,36 @@ function init(req, res, Request) { /* Cria a linha de comando */ 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/' + - id + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + id + ' WEB > /tmp/core_log 2>&1'; - -console.log(command_line); + id + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + id + ' Web > /tmp/core_log 2>&1'; + console.log(command_line); + var child; var job = queue.create('exec_command_line', { title: 'Command Line for: ' + req.body.servico, command_line: command_line }).save(); - - /* Executa a linha de comando */ - // child = exec(command_line, function(err, stdout, stderr) { - // // [stdout] = vlibras-core output - // }); - - - // vai remover isso em cima e colocar isso aqui queue.process('exec_command_line', function(job, done){ - queue_helper.exec_command_line(job.data.command_line, done); + child = queue_helper.exec_command_line(job.data.command_line, done); }); - job.on('complete', function(){ - console.log("Job complete"); + job.on('complete', function() { + /* 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 + '.webm' }); db.update(request_object, 'Completed', function(result) { - }); + }); + }); - }).on('failed', function(){ - console.log("Job failed"); - res.send(500, parameters.errorMessage('Erro na chamada ao core')); - db.update(request_object, 'Error', function(result) { - }); - }).on('progress', function(progress){ - process.stdout.write('\r job #' + job.id + ' ' + progress + '% complete'); - }); + /* 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_object, 'Error', function(result) { + }); + }); + }); - /* 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 + '.webm' }); -// db.update(request_object, 'Completed', function(result) { -// }); -// }); -// -// /* 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_object, 'Error', function(result) { -// }); -// }); } module.exports.init = init; diff --git a/endpoints/video.js b/endpoints/video.js index 979ffa7..580b658 100644 --- a/endpoints/video.js +++ b/endpoints/video.js @@ -21,7 +21,7 @@ function init(req, res) { res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos')); return; } - + process(req, res); }; @@ -29,7 +29,7 @@ function process(req, res) { var id = uuid.v4(); var folder = properties.uploads_folder + id; var locals = {}; - + async.series([ // Cria a pasta apropriada function(callback) { diff --git a/endpoints/video_legenda.js b/endpoints/video_legenda.js index a92dca7..0ad4fb9 100644 --- a/endpoints/video_legenda.js +++ b/endpoints/video_legenda.js @@ -21,7 +21,7 @@ function init(req, res) { res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos')); return; } - + process(req, res); }; @@ -29,7 +29,7 @@ function process(req, res) { var id = uuid.v4(); var folder = properties.uploads_folder + id; var locals = {}; - + async.series([ // Cria a pasta apropriada function(callback) { diff --git a/helpers/core.js b/helpers/core.js index 0ad7a14..a1e61b0 100644 --- a/helpers/core.js +++ b/helpers/core.js @@ -1,72 +1,89 @@ var requests = require('../helpers/requests'); var properties = require('../helpers/properties'); - +var queue_helper = require('../helpers/queue'); var url = require('url'); var http = require('http'); var querystring = require('querystring'); var exec = require('child_process').exec, child; +var kue = require('kue'), + queue = kue.createQueue(); function call(id, command_line, req, res) { /* Executa a linha de comando */ - child = exec(command_line, function(err, stdout, stderr) { - // [stdout] = vlibras-core output - // console.log('Err: ' + err); - // console.log('STDOUT: ' + stdout); - // console.log('STDERR: ' + stderr); + // child = exec(command_line, function(err, stdout, stderr) { + // // [stdout] = vlibras-core output + // // console.log('Err: ' + err); + // // console.log('STDOUT: ' + stdout); + // // console.log('STDERR: ' + stderr); + // }); + + var child, + job = queue.create('exec_command_line', { + title: 'Command Line for: ' + req.body.servico, + command_line: command_line + }).save(); + + queue.process('exec_command_line', function(job, done){ + child = queue_helper.exec_command_line(job.data.command_line, done); + if (child === undefined) { + throw "Erro ao conectar com o core"; + } }); - // Se o callback não foi definido - if (req.body.callback === undefined) { + job.on('complete', function() { + // Se o callback não foi definido + if (req.body.callback === undefined) { - // Se a chamada foi feita com sucesso - child.on('close', function(code, signal) { + // Se a chamada foi feita com sucesso + child.on('close', function(code, signal) { - // Se o core executou com erro - if (code !== 0) { - throw "Erro no retorno do core. Código: " + code; - } + // Se o core executou com erro + if (code !== 0) { + throw "Erro no retorno do core. Código: " + code; + } - // Se o core executou normal - res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4'}); - }); + // Se o core executou normal + res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4'}); + }); - // Se a chamada deu erro - child.on('error', function(code, signal) { - throw "Erro na chamada ao core"; - }); + // Se a chamada deu erro + child.on('error', function(code, signal) { + throw "Erro na chamada ao core"; + }); - // Se o callback foi definido - } else { + // Se o callback foi definido + } else { - // Se a chamada foi feita com sucesso - child.on('close', function(code, signal) { + // Se a chamada foi feita com sucesso + child.on('close', function(code, signal) { - // Endereço do callback - var path = url.parse(req.body.callback); + // 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 }); - } + // 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 }); + } - // Chama o callback - requests.postRequest(path, data); - }); + // Chama o callback + requests.postRequest(path, data); + }); - // Se a chamada deu erro - 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 } ); + // Se a chamada deu erro + 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 } ); - requests.postRequest(path, data); - }); + requests.postRequest(path, data); + }); - // Retorno da primeira requisição - res.send(200, JSON.stringify({ 'id': id })); - } + // Retorno da primeira requisição + res.send(200, JSON.stringify({ 'id': id })); + } + }); } -module.exports.call = call; \ No newline at end of file +module.exports.call = call; diff --git a/helpers/queue.js b/helpers/queue.js index 20f9a2f..4ef5ca3 100644 --- a/helpers/queue.js +++ b/helpers/queue.js @@ -1,8 +1,22 @@ var exec = require('child_process').exec, child; exports.exec_command_line = function (command_line, callback) { - child = exec(command_line, function(err, stdout, stderr) { - // [stdout] = vlibras-core output - }); - callback(); + + child = exec(command_line, function(err, stdout, stderr) { + // console.log('Err: ' + err); + // console.log('STDOUT: ' + stdout); + // console.log('STDERR: ' + stderr); + }); + //callback(); + // if (child === undefined) { + // throw "Erro ao conectar com o core"; + // } + child.on('error', function(code, signal) { + throw "Erro ao conectar com o core"; + }); + child.on('disconnect', function(code, signal) { + throw "Disconectado do core"; + }); + return child; + }; diff --git a/node_modules/ip/package.json b/node_modules/ip/package.json index c2af967..9ccc923 100644 --- a/node_modules/ip/package.json +++ b/node_modules/ip/package.json @@ -1,6 +1,6 @@ { "name": "ip", - "version": "0.3.2", + "version": "0.3.3", "author": { "name": "Fedor Indutny", "email": "fedor@indutny.com" @@ -8,7 +8,7 @@ "homepage": "https://github.com/indutny/node-ip", "repository": { "type": "git", - "url": "http://github.com/indutny/node-ip.git" + "url": "git+ssh://git@github.com/indutny/node-ip.git" }, "main": "lib/ip", "devDependencies": { @@ -17,15 +17,17 @@ "scripts": { "test": "mocha --reporter spec test/*-test.js" }, - "gitHead": "978e13d19531c9d9172044654df9dfb7ed116e45", + "license": "MIT", + "gitHead": "7798e2d222718087863d8a5a99e3c02f3a30e2b9", "description": "IP address utilities for node.js", "bugs": { "url": "https://github.com/indutny/node-ip/issues" }, - "_id": "ip@0.3.2", - "_shasum": "7d5ed34326688b36b6ab81f1865ea8266c28f0db", + "_id": "ip@0.3.3", + "_shasum": "8ee8309e92f0b040d287f72efaca1a21702d3fb4", "_from": "ip@latest", - "_npmVersion": "1.4.28", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.0", "_npmUser": { "name": "indutny", "email": "fedor@indutny.com" @@ -45,9 +47,9 @@ } ], "dist": { - "shasum": "7d5ed34326688b36b6ab81f1865ea8266c28f0db", - "tarball": "http://registry.npmjs.org/ip/-/ip-0.3.2.tgz" + "shasum": "8ee8309e92f0b040d287f72efaca1a21702d3fb4", + "tarball": "http://registry.npmjs.org/ip/-/ip-0.3.3.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/ip/-/ip-0.3.2.tgz" + "_resolved": "https://registry.npmjs.org/ip/-/ip-0.3.3.tgz" } diff --git a/outfile b/outfile new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/outfile diff --git a/vlibras-api b/vlibras-api new file mode 120000 index 0000000..9b190b6 --- /dev/null +++ b/vlibras-api @@ -0,0 +1 @@ +vlibras-api \ No newline at end of file -- libgit2 0.21.2