From 9793ede04cf4282b97e0bd0330dd4596760936c8 Mon Sep 17 00:00:00 2001 From: dhuy Date: Fri, 11 Apr 2014 02:26:55 -0300 Subject: [PATCH] Added video and subtitle endpoint --- helpers/parameters.js | 6 +++++- server.js | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 70 insertions(+), 4 deletions(-) diff --git a/helpers/parameters.js b/helpers/parameters.js index 3bae141..e1e3645 100644 --- a/helpers/parameters.js +++ b/helpers/parameters.js @@ -1,5 +1,9 @@ function getServiceType(service_type) { - switch(service_type) { + switch(service_type) { + case 'video-legenda': + return 2; + break; + case 'video': return 3; break; diff --git a/server.js b/server.js index ba7f178..fcf9a6a 100644 --- a/server.js +++ b/server.js @@ -60,7 +60,7 @@ app.post('/api', function(req, res){ break; case 'video': - /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */ + /* Verifica se os paramêtros [posicao, tamanho, transparencia] possuem algum valor */ if ((req.query.posicao !== '') && (req.query.tamanho !== '') && (req.query.transparencia !== '')) { /* Verifica se os paramêtros [linguagem, posicao, tamanho, transparencia] possuem os seus únicos valores possíveis */ if ((parameters.checkPosition(req.query.posicao) === true) && (parameters.checkSize(req.query.tamanho) === true) && (parameters.checkTransparency(req.query.transparencia) === true)) { @@ -110,8 +110,8 @@ app.post('/api', function(req, res){ break; case 'legenda': - /* Verifica se os paramêtros [legenda, transparencia] possuem algum valor */ - if ((req.files.legenda !== undefined) && (req.query.transparencia !== '')) { + /* Verifica se o paramêtro [transparencia] possue algum valor */ + if (req.query.transparencia !== '') { /* Verifica se os paramêtros [transparencia] possuem os seus únicos valores possíveis */ if ((parameters.checkTransparency(req.query.transparencia) === true)) { /* Checa se o arquivo de legenda submetivo possui uma extensão válida */ @@ -148,6 +148,68 @@ app.post('/api', function(req, res){ }); }); } 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')); + } + break; + + case 'video-legenda': + /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */ + if ((req.query.linguagem !== '') && (req.query.posicao !== '') && (req.query.tamanho !== '') && (req.query.transparencia !== '')) { + /* Verifica se os paramêtros [linguagem, posicao, tamanho, transparencia] possuem os seus únicos valores possíveis */ + if ((parameters.checkLanguage(req.query.linguagem) === true) && (parameters.checkPosition(req.query.posicao) === true) && (parameters.checkSize(req.query.tamanho) === true) && (parameters.checkTransparency(req.query.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/./gtaaas ' + parameters.getServiceType(req.query.servico) + ' uploads/' + ID_FROM_BD + '/' + + req.files.video.name + ' uploads/' + ID_FROM_BD + '/' + req.files.legenda.name + ' ' + parameters.getLanguage(req.params.linguagem) + + ' ' + parameters.getPosition(req.query.posicao) + ' ' + parameters.getSize(req.query.tamanho) + ' ' + + parameters.getTransparency(req.query.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('Vídeo com Extensão Inválida')); } } else { -- libgit2 0.21.2