Commit 9793ede04cf4282b97e0bd0330dd4596760936c8

Authored by dhuy
1 parent edb69bc6
Exists in master and in 1 other branch devel

Added video and subtitle endpoint

Showing 2 changed files with 70 additions and 4 deletions   Show diff stats
helpers/parameters.js
1 1 function getServiceType(service_type) {
2   - switch(service_type) {
  2 + switch(service_type) {
  3 + case 'video-legenda':
  4 + return 2;
  5 + break;
  6 +
3 7 case 'video':
4 8 return 3;
5 9 break;
... ...
server.js
... ... @@ -60,7 +60,7 @@ app.post('/api', function(req, res){
60 60 break;
61 61  
62 62 case 'video':
63   - /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */
  63 + /* Verifica se os paramêtros [posicao, tamanho, transparencia] possuem algum valor */
64 64 if ((req.query.posicao !== '') && (req.query.tamanho !== '') && (req.query.transparencia !== '')) {
65 65 /* Verifica se os paramêtros [linguagem, posicao, tamanho, transparencia] possuem os seus únicos valores possíveis */
66 66 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){
110 110 break;
111 111  
112 112 case 'legenda':
113   - /* Verifica se os paramêtros [legenda, transparencia] possuem algum valor */
114   - if ((req.files.legenda !== undefined) && (req.query.transparencia !== '')) {
  113 + /* Verifica se o paramêtro [transparencia] possue algum valor */
  114 + if (req.query.transparencia !== '') {
115 115 /* Verifica se os paramêtros [transparencia] possuem os seus únicos valores possíveis */
116 116 if ((parameters.checkTransparency(req.query.transparencia) === true)) {
117 117 /* Checa se o arquivo de legenda submetivo possui uma extensão válida */
... ... @@ -148,6 +148,68 @@ app.post('/api', function(req, res){
148 148 });
149 149 });
150 150 } else {
  151 + res.send(500, parameters.errorMessage('Legenda com Extensão Inválida'));
  152 + }
  153 + } else {
  154 + res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos'));
  155 + }
  156 + } else {
  157 + res.send(500, parameters.errorMessage('O valor de algum parâmetro está vazio'));
  158 + }
  159 + break;
  160 +
  161 + case 'video-legenda':
  162 + /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */
  163 + if ((req.query.linguagem !== '') && (req.query.posicao !== '') && (req.query.tamanho !== '') && (req.query.transparencia !== '')) {
  164 + /* Verifica se os paramêtros [linguagem, posicao, tamanho, transparencia] possuem os seus únicos valores possíveis */
  165 + 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)) {
  166 + /* Checa se o arquivo de vídeo submetivo possui uma extensão válida */
  167 + if (parameters.checkVideo(req.files.video.name)) {
  168 + /* Checa se o arquivo de legenda submetivo possui uma extensão válida */
  169 + if (parameters.checkSubtitle(req.files.legenda.name)) {
  170 + /* Cria uma pasta cujo o nome é o ID */
  171 + child = exec('mkdir ' + __dirname + '/uploads/' + ID_FROM_BD);
  172 +
  173 + /* Listener que dispara quando a pasta é criada */
  174 + child.on('close', function(code, signal){
  175 +
  176 + /* Move o vídeo submetido para a pasta com o seu ID correspondente */
  177 + fs.rename(req.files.video.path, __dirname + '/uploads/' + ID_FROM_BD + '/' + req.files.video.name, function(error) {
  178 + if (error) { console.log(error); }
  179 + });
  180 +
  181 + /* Move a legenda submetido para a pasta com o seu ID correspondente */
  182 + fs.rename(req.files.legenda.path, __dirname + '/uploads/' + ID_FROM_BD + '/' + req.files.legenda.name, function(error) {
  183 + if (error) { console.log(error); }
  184 + });
  185 +
  186 + /* Cria a linha de comando */
  187 + var command_line = 'vlibras_user/vlibras-core/./gtaaas ' + parameters.getServiceType(req.query.servico) + ' uploads/' + ID_FROM_BD + '/' +
  188 + req.files.video.name + ' uploads/' + ID_FROM_BD + '/' + req.files.legenda.name + ' ' + parameters.getLanguage(req.params.linguagem) +
  189 + ' ' + parameters.getPosition(req.query.posicao) + ' ' + parameters.getSize(req.query.tamanho) + ' ' +
  190 + parameters.getTransparency(req.query.transparencia) + ' ' + ID_FROM_BD;
  191 +
  192 + /* Executa a linha de comando */
  193 + child = exec(command_line, function(err, stdout, stderr) {
  194 + // [stdout] = vlibras-core output
  195 + // console.log(stdout);
  196 + });
  197 +
  198 + /* Listener que dispara quando a requisição ao core finaliza */
  199 + child.on('close', function(code, signal){
  200 + res.send(200, { 'response' : 'http://' + SERVER_IP + ':' + port + '/' + ID_FROM_BD + '.flv' });
  201 + ID_FROM_BD++;
  202 + });
  203 +
  204 + /* Listener que dispara quando a requisição ao core da erro */
  205 + child.on('error', function(code, signal){
  206 + res.send(500, parameters.errorMessage('Erro na chamada ao core'));
  207 + });
  208 + });
  209 + } else {
  210 + res.send(500, parameters.errorMessage('Legenda com Extensão Inválida'));
  211 + }
  212 + } else {
151 213 res.send(500, parameters.errorMessage('Vídeo com Extensão Inválida'));
152 214 }
153 215 } else {
... ...