From 022ebf654eba65db49a0be82562d6665535d81e2 Mon Sep 17 00:00:00 2001 From: dhuy Date: Mon, 26 May 2014 11:17:06 -0300 Subject: [PATCH] Including module pattern --- endpoints/ios.js | 41 +++++++++++++++++++++++++++++++++++++++++ endpoints/legenda.js | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ endpoints/texto.js | 40 ++++++++++++++++++++++++++++++++++++++++ endpoints/video.js | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ endpoints/video_legenda.js | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ helpers/.gitempty | 0 helpers/properties.js | 9 +++++++++ server.js | 352 ++++++++++++++++++++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 8 files changed, 410 insertions(+), 332 deletions(-) create mode 100644 endpoints/ios.js create mode 100644 endpoints/legenda.js create mode 100644 endpoints/texto.js create mode 100644 endpoints/video.js create mode 100644 endpoints/video_legenda.js delete mode 100644 helpers/.gitempty create mode 100644 helpers/properties.js diff --git a/endpoints/ios.js b/endpoints/ios.js new file mode 100644 index 0000000..e14f249 --- /dev/null +++ b/endpoints/ios.js @@ -0,0 +1,41 @@ +var parameters = require('../helpers/parameters'); +var properties = require('../helpers/properties'); + +var exec = require('child_process').exec, child; +var fs = require('fs'); + +function init(req, res) { + /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */ + if ((req.body.transparencia !== '') && (req.body.texto !== '')) { + /* Verifica se o paramêtro [transparencia] possui os únicos valores possíveis [opaco, transparente] */ + if (parameters.checkTransparency(req.body.transparencia)) { + /* Cria a linha de comando */ + var command_line = 'echo ' + req.body.texto + ' >> ' + __dirname + '/text_files/' + properties.ID_FROM_BD + ' && cd ../vlibras-core' + + ' && ./vlibras ' + parameters.getServiceType(req.body.servico) + ' ../vlibras-api/text_files/' + + properties.ID_FROM_BD + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + properties.ID_FROM_BD + ' IOS'; + + /* Executa a linha de comando */ + 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 + '/' + properties.ID_FROM_BD + '.avi' }); + properties.ID_FROM_BD++; + }); + + /* 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')); + }); + } else { + res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos')); + } + } else { + res.send(500, parameters.errorMessage('O valor de algum parâmetro está vazio')); + } +}; + +module.exports.init = init; \ No newline at end of file diff --git a/endpoints/legenda.js b/endpoints/legenda.js new file mode 100644 index 0000000..05da687 --- /dev/null +++ b/endpoints/legenda.js @@ -0,0 +1,56 @@ +var parameters = require('../helpers/parameters'); +var properties = require('../helpers/properties'); + +var exec = require('child_process').exec, child; +var fs = require('fs'); + +function init(req, res) { + /* Verifica se o paramêtro [transparencia] possue algum valor */ + if (req.body.transparencia !== '') { + /* Verifica se os paramêtros [transparencia] possuem os seus únicos valores possíveis */ + if ((parameters.checkTransparency(req.body.transparencia) === true)) { + /* Checa se o arquivo de legenda submetivo possui uma extensão válida */ + if (parameters.checkSubtitle(req.files.legenda.name)) { + /* Cria uma pasta cujo o nome é o ID */ + child = exec('mkdir ' + __dirname + '/uploads/' + properties.ID_FROM_BD); + + /* Listener que dispara quando a pasta é criada */ + child.on('close', function(code, signal){ + /* Move a legenda submetido para a pasta com o seu ID correspondente */ + fs.rename(req.files.legenda.path, __dirname + '/uploads/' + properties.ID_FROM_BD + '/' + req.files.legenda.name, function(error) { + if (error) { console.log(error); } + }); + + /* Cria a linha de comando */ + var command_line = 'vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' uploads/' + properties.ID_FROM_BD + '/' + + req.files.legenda.name + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + properties.ID_FROM_BD; + + /* Executa a linha de comando */ + 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 + '/' + properties.ID_FROM_BD + '.flv' }); + properties.ID_FROM_BD++; + }); + + /* 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')); + }); + }); + } else { + res.send(500, parameters.errorMessage('Legenda com Extensão Inválida')); + } + } else { + res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos')); + } + } else { + res.send(500, parameters.errorMessage('O valor de algum parâmetro está vazio')); + } +}; + +module.exports.init = init; \ No newline at end of file diff --git a/endpoints/texto.js b/endpoints/texto.js new file mode 100644 index 0000000..c3c8b22 --- /dev/null +++ b/endpoints/texto.js @@ -0,0 +1,40 @@ +var parameters = require('../helpers/parameters'); +var properties = require('../helpers/properties'); + +var exec = require('child_process').exec, child; +var fs = require('fs'); + +function init(req, res) { + /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */ + if ((req.body.transparencia !== '') && (req.body.texto !== '')) { + /* Verifica se o paramêtro [transparencia] possui os únicos valores possíveis [opaco, transparente] */ + if (parameters.checkTransparency(req.body.transparencia)) { + /* Cria a linha de comando */ + var command_line = 'echo ' + req.body.texto + ' >> ' + __dirname + '/text_files/' + properties.ID_FROM_BD + ' && cd ../vlibras-core' + + ' && ./vlibras ' + parameters.getServiceType(req.body.servico) + ' ../vlibras-api/text_files/' + + properties.ID_FROM_BD + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + properties.ID_FROM_BD + ' WEB'; + + /* Executa a linha de comando */ + child = exec(command_line, function(err, stdout, stderr) { + // [stdout] = vlibras-core output + }); + + /* 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 + '/' + properties.ID_FROM_BD + '.webm' }); + properties.ID_FROM_BD++; + }); + + /* 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')); + }); + } else { + res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos')); + } + } else { + res.send(500, parameters.errorMessage('O valor de algum parâmetro está vazio')); + } +}; + +module.exports.init = init; \ No newline at end of file diff --git a/endpoints/video.js b/endpoints/video.js new file mode 100644 index 0000000..a2c79ed --- /dev/null +++ b/endpoints/video.js @@ -0,0 +1,116 @@ +var parameters = require('../helpers/parameters'); +var properties = require('../helpers/properties'); + +var exec = require('child_process').exec, child; +var querystring = require('querystring'); +var http = require('http'); +var url = require('url'); +var fs = require('fs'); + +function init(req, res) { + /* Verifica se os paramêtros [posicao, tamanho, transparencia] possuem algum valor */ + if ((req.body.posicao !== '') && (req.body.tamanho !== '') && (req.body.transparencia !== '')) { + /* Verifica se os paramêtros [linguagem, posicao, tamanho, transparencia] possuem os seus únicos valores possíveis */ + if ((parameters.checkPosition(req.body.posicao) === true) && (parameters.checkSize(req.body.tamanho) === true) && (parameters.checkTransparency(req.body.transparencia) === true)) { + /* Checa se o arquivo de vídeo submetivo possui uma extensão válida */ + if (parameters.checkVideo(req.files.video.name)) { + /* Cria uma pasta cujo o nome é o ID */ + child = exec('mkdir ' + __dirname + '/uploads/' + properties.ID_FROM_BD); + + /* Listener que dispara quando a pasta é criada */ + child.on('close', function(code, signal){ + /* Move o vídeo submetido para a pasta com o seu ID correspondente */ + fs.rename(req.files.video.path, __dirname + '/uploads/' + properties.ID_FROM_BD + '/' + req.files.video.name, function(error) { + if (error) { console.log(error); } + }); + + /* Cria a linha de comando */ + var command_line = 'vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' uploads/' + properties.ID_FROM_BD + '/' + + req.files.video.name + ' 1 ' + parameters.getPosition(req.body.posicao) + ' ' + parameters.getSize(req.body.tamanho) + ' ' + + parameters.getTransparency(req.body.transparencia) + ' ' + properties.ID_FROM_BD; + + /* Executa a linha de comando */ + child = exec(command_line, function(err, stdout, stderr) { + // [stdout] = vlibras-core output + }); + + if (req.body.callback === undefined) { + /* 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 + '/' + properties.ID_FROM_BD + '.flv' }); + properties.ID_FROM_BD++; + }); + + child.on('error', function(code, signal){ + res.send(500, parameters.errorMessage('Erro na chamada ao core')); + }); + } else { + + child.on('close', function(code, signal){ + var path = url.parse(req.body.callback); + + var data = querystring.stringify({ 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + properties.ID_FROM_BD + '.flv' }); + + var options = { + host: path.hostname, + port: path.port, + path: path.path, + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + 'Content-Length': Buffer.byteLength(data) + } + }; + + var requesting = http.request(options, function(res) { + res.setEncoding('utf8'); + // res.on('data', function (chunk) { + // console.log("req.body: " + chunk); + // }); + }); + + requesting.write(data); + requesting.end(); + + properties.ID_FROM_BD++; + }); + + /* Listener que dispara quando a requisição ao core da erro */ + child.on('error', function(code, signal){ + + var data = querystring.stringify(parameters.errorMessage('Erro na chamada ao core')); + + var options = { + host: path.hostname, + port: path.port, + path: path.path, + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + 'Content-Length': Buffer.byteLength(data) + } + }; + + var requesting = http.request(options, function(res) { + res.setEncoding('utf8'); + }); + + requesting.write(data); + requesting.end(); + }); + + res.send(200); + } + }); + } else { + res.send(500, parameters.errorMessage('Vídeo com Extensão Inválida')); + } + } else { + res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos')); + } + } else { + res.send(500, parameters.errorMessage('O valor de algum parâmetro está vazio')); + } +}; + +module.exports.init = init; \ No newline at end of file diff --git a/endpoints/video_legenda.js b/endpoints/video_legenda.js new file mode 100644 index 0000000..ebaab0a --- /dev/null +++ b/endpoints/video_legenda.js @@ -0,0 +1,128 @@ +var parameters = require('../helpers/parameters'); +var properties = require('../helpers/properties'); + +var exec = require('child_process').exec, child; +var querystring = require('querystring'); +var http = require('http'); +var url = require('url'); +var fs = require('fs'); + +function init(req, res) { + /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */ + if ((req.body.linguagem !== '') && (req.body.posicao !== '') && (req.body.tamanho !== '') && (req.body.transparencia !== '')) { + /* Verifica se os paramêtros [linguagem, posicao, tamanho, transparencia] possuem os seus únicos valores possíveis */ + if ((parameters.checkLanguage(req.body.linguagem) === true) && (parameters.checkPosition(req.body.posicao) === true) && (parameters.checkSize(req.body.tamanho) === true) && (parameters.checkTransparency(req.body.transparencia) === true)) { + /* Checa se o arquivo de vídeo submetivo possui uma extensão válida */ + if (parameters.checkVideo(req.files.video.name)) { + /* Checa se o arquivo de legenda submetivo possui uma extensão válida */ + if (parameters.checkSubtitle(req.files.legenda.name)) { + /* Cria uma pasta cujo o nome é o ID */ + child = exec('mkdir ' + __dirname + '/uploads/' + properties.ID_FROM_BD); + + /* Listener que dispara quando a pasta é criada */ + child.on('close', function(code, signal){ + + /* Move o vídeo submetido para a pasta com o seu ID correspondente */ + fs.rename(req.files.video.path, __dirname + '/uploads/' + properties.ID_FROM_BD + '/' + req.files.video.name, function(error) { + if (error) { console.log(error); } + }); + + /* Move a legenda submetido para a pasta com o seu ID correspondente */ + fs.rename(req.files.legenda.path, __dirname + '/uploads/' + properties.ID_FROM_BD + '/' + req.files.legenda.name, function(error) { + if (error) { console.log(error); } + }); + + /* Cria a linha de comando */ + var command_line = 'vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' uploads/' + properties.ID_FROM_BD + '/' + + req.files.video.name + ' uploads/' + properties.ID_FROM_BD + '/' + req.files.legenda.name + ' ' + parameters.getLanguage(req.body.linguagem) + + ' ' + parameters.getPosition(req.body.posicao) + ' ' + parameters.getSize(req.body.tamanho) + ' ' + + parameters.getTransparency(req.body.transparencia) + ' ' + properties.ID_FROM_BD; + + /* Executa a linha de comando */ + child = exec(command_line, function(err, stdout, stderr) { + // [stdout] = vlibras-core output + }); + + if (req.body.callback === undefined) { + /* 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 + '/' + properties.ID_FROM_BD + '.flv' }); + properties.ID_FROM_BD++; + }); + + child.on('error', function(code, signal){ + res.send(500, parameters.errorMessage('Erro na chamada ao core')); + }); + } else { + + child.on('close', function(code, signal){ + var path = url.parse(req.body.callback); + + var data = querystring.stringify({ 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + properties.ID_FROM_BD + '.flv' }); + + var options = { + host: path.hostname, + port: path.port, + path: path.path, + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + 'Content-Length': Buffer.byteLength(data) + } + }; + + var requesting = http.request(options, function(res) { + res.setEncoding('utf8'); + // res.on('data', function (chunk) { + // console.log("req.body: " + chunk); + // }); + }); + + requesting.write(data); + requesting.end(); + + properties.ID_FROM_BD++; + }); + + /* Listener que dispara quando a requisição ao core da erro */ + child.on('error', function(code, signal){ + + var data = querystring.stringify(parameters.errorMessage('Erro na chamada ao core')); + + var options = { + host: path.hostname, + port: path.port, + path: path.path, + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + 'Content-Length': Buffer.byteLength(data) + } + }; + + var requesting = http.request(options, function(res) { + res.setEncoding('utf8'); + }); + + requesting.write(data); + requesting.end(); + }); + + res.send(200); + } + }); + } else { + res.send(500, parameters.errorMessage('Legenda com Extensão Inválida')); + } + } else { + res.send(500, parameters.errorMessage('Vídeo com Extensão Inválida')); + } + } else { + res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos')); + } + } else { + res.send(500, parameters.errorMessage('O valor de algum parâmetro está vazio')); + } +}; + +module.exports.init = init; \ No newline at end of file diff --git a/helpers/.gitempty b/helpers/.gitempty deleted file mode 100644 index e69de29..0000000 --- a/helpers/.gitempty +++ /dev/null diff --git a/helpers/properties.js b/helpers/properties.js new file mode 100644 index 0000000..993d093 --- /dev/null +++ b/helpers/properties.js @@ -0,0 +1,9 @@ +var host = '0.0.0.0'; +var port = 5000; +var ID_FROM_BD = 1; +var SERVER_IP = '150.165.204.30'; + +module.exports.host = host; +module.exports.port = port; +module.exports.ID_FROM_BD = ID_FROM_BD; +module.exports.SERVER_IP = SERVER_IP; \ No newline at end of file diff --git a/server.js b/server.js index 7154ca1..f19163f 100644 --- a/server.js +++ b/server.js @@ -1,20 +1,16 @@ var parameters = require('./helpers/parameters'); -var exec = require('child_process').exec, child; -var path = require('path'); -var http = require('http'); -var url = require('url'); -var fs = require('fs'); -var querystring = require('querystring'); -var express = require('express'); +var properties = require('./helpers/properties'); -var host = '0.0.0.0'; -var port = 5000; +var ep_texto = require('./endpoints/texto'); +var ep_ios = require('./endpoints/ios'); +var ep_video = require('./endpoints/video'); +var ep_legenda = require('./endpoints/legenda'); +var ep_video_legenda = require('./endpoints/video_legenda'); +var path = require('path'); +var express = require('express'); var app = express(); -var ID_FROM_BD = 1; -var SERVER_IP = '150.165.204.30'; - app.use(express.static(path.join(__dirname, '/videos'))); app.use(express.bodyParser({ keepExtensions: true, uploadDir: path.join(__dirname, '/uploads') })); @@ -23,341 +19,33 @@ app.get('/', function(req, res){ }); app.post('/api', function(req, res){ - console.log(req.body); /* Verifica se o paramêtro [servico] possui algum valor */ if (req.body.servico !== '') { /* Verifica qual é o Tipo de Serviço fornecido */ switch(req.body.servico) { - /* Case para o Tipo de Serviço: Texto */ + /* Tipo de Serviço: Texto */ case 'texto': - /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */ - if ((req.body.transparencia !== '') && (req.body.texto !== '')) { - /* Verifica se o paramêtro [transparencia] possui os únicos valores possíveis [opaco, transparente] */ - if (parameters.checkTransparency(req.body.transparencia)) { - /* Cria a linha de comando */ - var command_line = 'echo ' + req.body.texto + ' >> ' + __dirname + '/text_files/' + ID_FROM_BD + ' && cd ../vlibras-core' + - ' && ./vlibras ' + parameters.getServiceType(req.body.servico) + ' ../vlibras-api/text_files/' + - ID_FROM_BD + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + ID_FROM_BD + ' WEB'; - - /* Executa a linha de comando */ - 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://' + SERVER_IP + ':' + port + '/' + ID_FROM_BD + '.webm' }); - ID_FROM_BD++; - }); - - /* 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')); - }); - } else { - res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos')); - } - } else { - res.send(500, parameters.errorMessage('O valor de algum parâmetro está vazio')); - } + ep_texto.init(req, res); break; - /* Case para o Tipo de Serviço: iOS */ + /* Tipo de Serviço: iOS */ case 'ios': - /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */ - if ((req.body.transparencia !== '') && (req.body.texto !== '')) { - /* Verifica se o paramêtro [transparencia] possui os únicos valores possíveis [opaco, transparente] */ - if (parameters.checkTransparency(req.body.transparencia)) { - /* Cria a linha de comando */ - var command_line = 'echo ' + req.body.texto + ' >> ' + __dirname + '/text_files/' + ID_FROM_BD + ' && cd ../vlibras-core' + - ' && ./vlibras ' + parameters.getServiceType(req.body.servico) + ' ../vlibras-api/text_files/' + - ID_FROM_BD + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + ID_FROM_BD + ' IOS'; - - /* Executa a linha de comando */ - 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://' + SERVER_IP + ':' + port + '/' + ID_FROM_BD + '.avi' }); - ID_FROM_BD++; - }); - - /* 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')); - }); - } else { - res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos')); - } - } else { - res.send(500, parameters.errorMessage('O valor de algum parâmetro está vazio')); - } + ep_ios.init(req, res); break; + /* Tipo de Serviço: Só o Vídeo */ case 'video': - /* Verifica se os paramêtros [posicao, tamanho, transparencia] possuem algum valor */ - if ((req.body.posicao !== '') && (req.body.tamanho !== '') && (req.body.transparencia !== '')) { - /* Verifica se os paramêtros [linguagem, posicao, tamanho, transparencia] possuem os seus únicos valores possíveis */ - if ((parameters.checkPosition(req.body.posicao) === true) && (parameters.checkSize(req.body.tamanho) === true) && (parameters.checkTransparency(req.body.transparencia) === true)) { - /* Checa se o arquivo de vídeo submetivo possui uma extensão válida */ - if (parameters.checkVideo(req.files.video.name)) { - /* Cria uma pasta cujo o nome é o ID */ - child = exec('mkdir ' + __dirname + '/uploads/' + ID_FROM_BD); - - /* Listener que dispara quando a pasta é criada */ - child.on('close', function(code, signal){ - /* Move o vídeo submetido para a pasta com o seu ID correspondente */ - fs.rename(req.files.video.path, __dirname + '/uploads/' + ID_FROM_BD + '/' + req.files.video.name, function(error) { - if (error) { console.log(error); } - }); - - /* Cria a linha de comando */ - var command_line = 'vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' uploads/' + ID_FROM_BD + '/' + - req.files.video.name + ' 1 ' + parameters.getPosition(req.body.posicao) + ' ' + parameters.getSize(req.body.tamanho) + ' ' + - parameters.getTransparency(req.body.transparencia) + ' ' + ID_FROM_BD; - - console.log(command_line); - - /* Executa a linha de comando */ - child = exec(command_line, function(err, stdout, stderr) { - // [stdout] = vlibras-core output - console.log(err); - console.log(stdout); - console.log(stderr); - }); - - if (req.body.callback === undefined) { - /* Listener que dispara quando a requisição ao core finaliza */ - child.on('close', function(code, signal){ - res.send(200, { 'response' : 'http://' + SERVER_IP + ':' + port + '/' + ID_FROM_BD + '.flv' }); - ID_FROM_BD++; - }); - - /* 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')); - }); - } else { - - var path = url.parse(req.body.callback); - - var data = querystring.stringify({ 'response' : 'http://' + SERVER_IP + ':' + port + '/' + ID_FROM_BD + '.flv' }); - - var options = { - host: path.hostname, - port: path.port, - path: path.path, - method: 'POST', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded', - 'Content-Length': Buffer.byteLength(data) - } - }; - - var requesting = http.request(options, function(res) { - res.setEncoding('utf8'); - }); - - requesting.write(data); - requesting.end(); - - /* Listener que dispara quando a requisição ao core da erro */ - child.on('error', function(code, signal){ - - var data = querystring.stringify(parameters.errorMessage('Erro na chamada ao core')); - - var options = { - host: path.hostname, - port: path.port, - path: path.path, - method: 'POST', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded', - 'Content-Length': Buffer.byteLength(data) - } - }; - - var requesting = http.request(options, function(res) { - res.setEncoding('utf8'); - }); - - requesting.write(data); - requesting.end(); - }); - - res.send(200); - } - }); - } else { - res.send(500, parameters.errorMessage('Vídeo com Extensão Inválida')); - } - } else { - res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos')); - } - } else { - res.send(500, parameters.errorMessage('O valor de algum parâmetro está vazio')); - } + ep_video.init(req, res); break; + /* Tipo de Serviço: Só a Legenda */ case 'legenda': - /* Verifica se o paramêtro [transparencia] possue algum valor */ - if (req.body.transparencia !== '') { - /* Verifica se os paramêtros [transparencia] possuem os seus únicos valores possíveis */ - if ((parameters.checkTransparency(req.body.transparencia) === true)) { - /* Checa se o arquivo de legenda submetivo possui uma extensão válida */ - if (parameters.checkSubtitle(req.files.legenda.name)) { - /* Cria uma pasta cujo o nome é o ID */ - child = exec('mkdir ' + __dirname + '/uploads/' + ID_FROM_BD); - - /* Listener que dispara quando a pasta é criada */ - child.on('close', function(code, signal){ - /* Move a legenda submetido para a pasta com o seu ID correspondente */ - fs.rename(req.files.legenda.path, __dirname + '/uploads/' + ID_FROM_BD + '/' + req.files.legenda.name, function(error) { - if (error) { console.log(error); } - }); - - /* Cria a linha de comando */ - var command_line = 'vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' uploads/' + ID_FROM_BD + '/' + - req.files.legenda.name + ' ' + parameters.getTransparency(req.body.transparencia) + ' ' + ID_FROM_BD; - - /* Executa a linha de comando */ - 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://' + SERVER_IP + ':' + port + '/' + ID_FROM_BD + '.flv' }); - ID_FROM_BD++; - }); - - /* 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')); - }); - }); - } else { - res.send(500, parameters.errorMessage('Legenda com Extensão Inválida')); - } - } else { - res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos')); - } - } else { - res.send(500, parameters.errorMessage('O valor de algum parâmetro está vazio')); - } + ep_legenda.init(req, res); break; + /* Tipo de Serviço: Video + Legenda */ case 'video-legenda': - /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */ - if ((req.body.linguagem !== '') && (req.body.posicao !== '') && (req.body.tamanho !== '') && (req.body.transparencia !== '')) { - /* Verifica se os paramêtros [linguagem, posicao, tamanho, transparencia] possuem os seus únicos valores possíveis */ - if ((parameters.checkLanguage(req.body.linguagem) === true) && (parameters.checkPosition(req.body.posicao) === true) && (parameters.checkSize(req.body.tamanho) === true) && (parameters.checkTransparency(req.body.transparencia) === true)) { - /* Checa se o arquivo de vídeo submetivo possui uma extensão válida */ - if (parameters.checkVideo(req.files.video.name)) { - /* Checa se o arquivo de legenda submetivo possui uma extensão válida */ - if (parameters.checkSubtitle(req.files.legenda.name)) { - /* Cria uma pasta cujo o nome é o ID */ - child = exec('mkdir ' + __dirname + '/uploads/' + ID_FROM_BD); - - /* Listener que dispara quando a pasta é criada */ - child.on('close', function(code, signal){ - - /* Move o vídeo submetido para a pasta com o seu ID correspondente */ - fs.rename(req.files.video.path, __dirname + '/uploads/' + ID_FROM_BD + '/' + req.files.video.name, function(error) { - if (error) { console.log(error); } - }); - - /* Move a legenda submetido para a pasta com o seu ID correspondente */ - fs.rename(req.files.legenda.path, __dirname + '/uploads/' + ID_FROM_BD + '/' + req.files.legenda.name, function(error) { - if (error) { console.log(error); } - }); - - /* Cria a linha de comando */ - var command_line = 'vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' uploads/' + ID_FROM_BD + '/' + - req.files.video.name + ' uploads/' + ID_FROM_BD + '/' + req.files.legenda.name + ' ' + parameters.getLanguage(req.body.linguagem) + - ' ' + parameters.getPosition(req.body.posicao) + ' ' + parameters.getSize(req.body.tamanho) + ' ' + - parameters.getTransparency(req.body.transparencia) + ' ' + ID_FROM_BD; - - /* Executa a linha de comando */ - child = exec(command_line, function(err, stdout, stderr) { - // [stdout] = vlibras-core output - }); - - if (req.body.callback === undefined) { - /* Listener que dispara quando a requisição ao core finaliza */ - child.on('close', function(code, signal){ - res.send(200, { 'response' : 'http://' + SERVER_IP + ':' + port + '/' + ID_FROM_BD + '.flv' }); - ID_FROM_BD++; - }); - } else { - - var path = url.parse(req.body.callback); - - var data = querystring.stringify({ 'response' : 'http://' + SERVER_IP + ':' + port + '/' + ID_FROM_BD + '.flv' }); - - var options = { - host: path.hostname, - port: path.port, - path: path.path, - method: 'POST', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded', - 'Content-Length': Buffer.byteLength(data) - } - }; - - var requesting = http.request(options, function(res) { - res.setEncoding('utf8'); - res.on('data', function (chunk) { - console.log("body: " + chunk); - }); - }); - - requesting.write(data); - requesting.end(); - } - - /* Listener que dispara quando a requisição ao core da erro */ - child.on('error', function(code, signal){ - - var data = querystring.stringify(parameters.errorMessage('Erro na chamada ao core')); - - var options = { - host: path.hostname, - port: path.port, - path: path.path, - method: 'POST', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded', - 'Content-Length': Buffer.byteLength(data) - } - }; - - var requesting = http.request(options, function(res) { - res.setEncoding('utf8'); - }); - - requesting.write(data); - requesting.end(); - }); - }); - } else { - res.send(500, parameters.errorMessage('Legenda com Extensão Inválida')); - } - } else { - res.send(500, parameters.errorMessage('Vídeo com Extensão Inválida')); - } - } else { - res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos')); - } - } else { - res.send(500, parameters.errorMessage('O valor de algum parâmetro está vazio')); - } + ep_video_legenda.init(req, res); break; /* Case para um Tipo de Serviço inválido */ @@ -370,6 +58,6 @@ app.post('/api', function(req, res){ } }); -app.listen(port, host, function(){ - console.log('Server running on ' + host + ':' + port); +app.listen(properties.port, properties.host, function(){ + console.log('Server running on ' + properties.host + ':' + properties.port); }); -- libgit2 0.21.2