Commit e91e1765057e16ec3f948bb291b019ba17d3ae4d

Authored by Fernando Brito
1 parent 37f3e79f
Exists in master and in 1 other branch devel

Refatoração video e video-legenda, async e log

* Adiciona async
* Log melhorado
* Refatoração grande em video e video-legenda
endpoints/video.js
1 1 var parameters = require('../helpers/parameters');
2 2 var properties = require('../helpers/properties');
3   -var requests = require('../helpers/requests');
  3 +var files = require('../helpers/files');
  4 +var core = require('../helpers/core');
4 5  
5   -var exec = require('child_process').exec, child;
6   -var querystring = require('querystring');
7 6 var uuid = require('node-uuid');
8 7 var mkdirp = require('mkdirp');
9   -var http = require('http');
10   -var url = require('url');
11   -var fs = require('fs');
  8 +var async = require('async');
12 9  
13 10 function init(req, res) {
  11 + res.set("Content-Type", "application/json");
14 12  
15   - var id = uuid.v4();
16   -
17   - /* Verifica se os paramêtros [posicao, tamanho, transparencia] possuem algum valor */
  13 + /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */
18 14 if ((req.body.posicao === '') || (req.body.tamanho === '') || (req.body.transparencia === '')) {
19 15 res.send(500, parameters.errorMessage('O valor de algum parâmetro está vazio'));
20 16 return;
... ... @@ -25,115 +21,85 @@ function init(req, res) {
25 21 res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos'));
26 22 return;
27 23 }
  24 +
  25 + process(req, res);
  26 +};
28 27  
29   - /* Checa se o arquivo de vídeo submetivo possui uma extensão válida */
30   - if (req.files.video !== undefined) {
31   - if (parameters.checkVideo(req.files.video.name) === false) {
32   - res.send(500, parameters.errorMessage('Vídeo enviado com extensão inválida'));
33   - return;
34   - }
35   -
36   - var video = {
37   - 'name': req.files.video.name,
38   - 'path': req.files.video.path
39   - }
40   -
41   - processVideo(id, video, req, res);
42   -
43   - } else if (req.body.video_url !== undefined) {
44   - http.get(req.body.video_url, function(response) {
45   -
46   - // Salva o arquivo em disco
47   - response.pipe(fs.createWriteStream(id));
48   -
49   - var video = {
50   - 'name': req.body.video_url.substring(req.body.video_url.lastIndexOf('/') + 1),
51   - 'path': id
52   - }
53   -
54   - processVideo(id, video, req, res);
55   -
56   - }).on('error', function(e) {
57   - error = 'Problema ao carregar video_url: ' + e.message;
58   -
59   - res.send(500, parameters.errorMessage(error));
60   - });
  28 +function process(req, res) {
  29 + var id = uuid.v4();
  30 + var folder = properties.uploads_folder + id;
  31 + var locals = {};
  32 +
  33 + async.series([
  34 + // Cria a pasta apropriada
  35 + function(callback) {
  36 + console.log("== Criando pasta " + folder);
61 37  
62   - } else {
63   - res.send(500, parameters.errorMessage('Video deve ser enviado como parâmetro "video" ou como "video_url"'));
64   - return;
65   - }
66   -};
  38 + mkdirp(folder, function(err) {
  39 + var error;
67 40  
  41 + if (err) { error = "Erro na criação da pasta com o id: " + id + "; " + err; }
68 42  
69   -function processVideo(id, video, req, res) {
70   - /* Cria uma pasta cujo o nome é o ID atual */
71   - mkdirp(properties.uploads_folder + id, function(error) {
72   -
73   - if (error) { console.log(error); res.send(500, parameters.errorMessage('Erro na criação da pasta com o ID: ' + id)); return; }
74   -
75   - /* Move o vídeo submetido para a pasta com o seu ID correspondente */
76   - fs.rename(video.path, properties.uploads_folder + id + '/' + video.name, function(error) {
77   - if (error) { console.log(error); res.send(500, parameters.errorMessage('Erro ao mover o vídeo submetido')); return; }
78   - });
79   -
80   - /* Cria a linha de comando */
81   - var command_line = 'vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' uploads/' + id + '/' +
82   - video.name + ' 1 ' + parameters.getPosition(req.body.posicao) + ' ' + parameters.getSize(req.body.tamanho) + ' ' +
83   - parameters.getTransparency(req.body.transparencia) + ' ' + id + ' > /tmp/core_log 2>&1';
84   -
85   - console.log(command_line);
86   -
87   - /* Executa a linha de comando */
88   - child = exec(command_line, function(err, stdout, stderr) {
89   - // [stdout] = vlibras-core output
90   - // console.log('Err: ' + err);
91   - // console.log('STDOUT: ' + stdout);
92   - // console.log('STDERR: ' + stderr);
93   - });
94   -
95   - if (req.body.callback === undefined) {
96   - /* Listener que dispara quando a requisição ao core finaliza */
97   - child.on('close', function(code, signal){
98   - if (code !== 0) {
99   - console.log('Erro código: ' + code); res.send(500, { 'error': 'Erro no Core', 'code': code }); return;
100   - }
101   -
102   - res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.flv' });
  43 + callback(error);
103 44 });
  45 + },
  46 +
  47 + // Baixa e move os arquivos para a pasta correta
  48 + function(callback) {
  49 + console.log("== Baixando os arquivos");
  50 +
  51 + downloadAndMoveFiles(folder, req, locals, callback);
  52 + },
  53 +
  54 + // Chama o core
  55 + function(callback) {
  56 + console.log("== Chamando o core");
  57 +
  58 + // Faz a chamada ao core
  59 + try {
  60 + callCore(id, locals.video, locals.subtitle, req, res);
  61 + callback();
  62 + } catch (err) {
  63 + callback(err);
  64 + }
  65 + }
  66 + ], function(err) {
  67 + // Se tiver erro
  68 + if (err) {
  69 + res.send(500, parameters.errorMessage(err));
104 70  
105   - child.on('error', function(code, signal){
106   - res.send(500, parameters.errorMessage('Erro na chamada ao core'));
107   - });
108   - } else {
  71 + return;
  72 + }
  73 + });
  74 +}
109 75  
110   - child.on('close', function(code, signal){
111   - if (code !== 0) {
112   - var path = url.parse(req.body.callback);
113   - var data = querystring.stringify( { 'error': 'Erro no Core', 'code': code } );
114 76  
115   - requests.postRequest(path, data);
  77 +function downloadAndMoveFiles(folder, req, locals, callback) {
  78 + async.parallel([
  79 + // Download video
  80 + function(callback) {
  81 + files.downloadAndMoveVideo(folder, req, locals, callback);
  82 + }
  83 + ], function(err) {
  84 + console.log("=== Video baixado");
116 85  
117   - return;
118   - }
  86 + // Callback chamado depois de todas as tarefas
  87 + // Se tiver erro, vai passar para cima
  88 + callback(err);
  89 + });
  90 +}
119 91  
120   - var path = url.parse(req.body.callback);
121   - var data = querystring.stringify({ 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.flv' });
122 92  
123   - requests.postRequest(path, data);
124   - });
  93 +function callCore(id, video, subtitle, req, res) {
125 94  
126   - /* Listener que dispara quando a requisição ao core da erro */
127   - child.on('error', function(code, signal){
128   - var path = url.parse(req.body.callback);
129   - var data = querystring.stringify( { 'error': 'Erro na chamada ao core', 'code': code, 'id': id } );
  95 + /* Cria a linha de comando */
  96 + var command_line = 'vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' ' +
  97 + video.path + ' 1 ' + parameters.getPosition(req.body.posicao) + ' ' + parameters.getSize(req.body.tamanho) + ' ' +
  98 + parameters.getTransparency(req.body.transparencia) + ' ' + id + ' > /tmp/core_log 2>&1';
130 99  
131   - requests.postRequest(path, data);
132   - });
  100 + console.log("=== Core: " + command_line);
133 101  
134   - res.send(200, JSON.stringify({ 'id': id }));
135   - }
136   - });
137   -}
  102 + core.call(id, command_line, req, res);
  103 +};
138 104  
139 105 module.exports.init = init;
... ...
endpoints/video_legenda.js
1 1 var parameters = require('../helpers/parameters');
2 2 var properties = require('../helpers/properties');
3   -var requests = require('../helpers/requests');
  3 +var files = require('../helpers/files');
  4 +var core = require('../helpers/core');
4 5  
5   -var exec = require('child_process').exec, child;
6   -var querystring = require('querystring');
7 6 var uuid = require('node-uuid');
8 7 var mkdirp = require('mkdirp');
9   -var http = require('http');
10   -var url = require('url');
11   -var fs = require('fs');
  8 +var async = require('async');
12 9  
13 10 function init(req, res) {
14   -
15   - var id = uuid.v4();
  11 + res.set("Content-Type", "application/json");
16 12  
17 13 /* Verifica se os paramêtros [transparencia, texto] possuem algum valor */
18 14 if ((req.body.linguagem === '') || (req.body.posicao === '') || (req.body.tamanho === '') || (req.body.transparencia === '')) {
... ... @@ -25,92 +21,91 @@ function init(req, res) {
25 21 res.send(500, parameters.errorMessage('Parâmetros insuficientes ou inválidos'));
26 22 return;
27 23 }
28   -
29   - /* Checa se o arquivo de vídeo submetivo possui uma extensão válida */
30   - if (parameters.checkVideo(req.files.video.name) === false) {
31   - res.send(500, parameters.errorMessage('Vídeo com Extensão Inválida'));
32   - return;
33   - }
34   -
35   - /* Checa se o arquivo de legenda submetivo possui uma extensão válida */
36   - if (parameters.checkSubtitle(req.files.legenda.name) === false) {
37   - res.send(500, parameters.errorMessage('Legenda com Extensão Inválida'));
38   - return;
39   - }
  24 +
  25 + process(req, res);
  26 +};
40 27  
41   - /* Cria uma pasta cujo o nome é o ID atual */
42   - mkdirp(properties.uploads_folder + id, function(error) {
  28 +function process(req, res) {
  29 + var id = uuid.v4();
  30 + var folder = properties.uploads_folder + id;
  31 + var locals = {};
43 32  
44   - if (error) { console.log(error); return; }
45   -
46   - /* Move o vídeo submetido para a pasta com o seu ID correspondente */
47   - fs.rename(req.files.video.path, properties.uploads_folder + id + '/' + req.files.video.name, function(error) {
48   - if (error) { console.log(error); res.send(500, parameters.errorMessage('Erro ao mover o vídeo submetido')); return; }
49   - });
50   -
51   - /* Move a legenda submetido para a pasta com o seu ID correspondente */
52   - fs.rename(req.files.legenda.path, properties.uploads_folder + id + '/' + req.files.legenda.name, function(error) {
53   - if (error) { console.log(error); res.send(500, parameters.errorMessage('Erro ao mover a legenda submetido')); return; }
54   - });
55   -
56   - /* Cria a linha de comando */
57   - var command_line = 'vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' uploads/' + id + '/' +
58   - req.files.video.name + ' uploads/' + id + '/' + req.files.legenda.name + ' ' + parameters.getLanguage(req.body.linguagem) +
59   - ' ' + parameters.getPosition(req.body.posicao) + ' ' + parameters.getSize(req.body.tamanho) + ' ' +
60   - parameters.getTransparency(req.body.transparencia) + ' ' + id + ' > /tmp/core_log 2>&1';
61   -
62   - console.log(command_line);
63   -
64   - /* Executa a linha de comando */
65   - child = exec(command_line, function(err, stdout, stderr) {
66   - // [stdout] = vlibras-core output
67   - // console.log('Err: ' + err);
68   - // console.log('STDOUT: ' + stdout);
69   - // console.log('STDERR: ' + stderr);
70   - });
71   -
72   - if (req.body.callback === undefined) {
73   - /* Listener que dispara quando a requisição ao core finaliza */
74   - child.on('close', function(code, signal){
75   - if (code !== 0) {
76   - console.log('Erro código: ' + code); res.send(500, { 'error': 'Erro no Core', 'code': code }); return;
77   - }
78   -
79   - res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.flv' });
80   - });
  33 + async.series([
  34 + // Cria a pasta apropriada
  35 + function(callback) {
  36 + console.log("== Criando pasta " + folder);
  37 +
  38 + mkdirp(folder, function(err) {
  39 + var error;
  40 +
  41 + if (err) { error = "Erro na criação da pasta com o id: " + id + "; " + err; }
81 42  
82   - child.on('error', function(code, signal){
83   - res.send(500, parameters.errorMessage('Erro na chamada ao core'));
  43 + callback(error);
84 44 });
85   - } else {
  45 + },
  46 +
  47 + // Baixa e move os arquivos para a pasta correta
  48 + function(callback) {
  49 + console.log("== Baixando os arquivos");
  50 +
  51 + downloadAndMoveFiles(folder, req, locals, callback);
  52 + },
  53 +
  54 + // Chama o core
  55 + function(callback) {
  56 + console.log("== Chamando o core");
  57 +
  58 + // Faz a chamada ao core
  59 + try {
  60 + callCore(id, locals.video, locals.subtitle, req, res);
  61 + callback();
  62 + } catch (err) {
  63 + callback(err);
  64 + }
  65 + }
  66 + ], function(err) {
  67 + // Se tiver erro
  68 + if (err) {
  69 + res.send(500, parameters.errorMessage(err));
86 70  
87   - child.on('close', function(code, signal){
88   - if (code !== 0) {
89   - var path = url.parse(req.body.callback);
90   - var data = querystring.stringify( { 'error': 'Erro no Core', 'code': code } );
  71 + return;
  72 + }
  73 + });
  74 +}
91 75  
92   - requests.postRequest(path, data);
93 76  
94   - return;
95   - }
  77 +function downloadAndMoveFiles(folder, req, locals, callback) {
  78 + async.parallel([
  79 + // Download video
  80 + function(callback) {
  81 + files.downloadAndMoveVideo(folder, req, locals, callback);
  82 + },
96 83  
97   - var path = url.parse(req.body.callback);
98   - var data = querystring.stringify({ 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.flv' });
  84 + // Download subtitle
  85 + function(callback) {
  86 + files.downloadAndMoveSubtitle(folder, req, locals, callback);
  87 + }
  88 + ], function(err) {
  89 + console.log("=== Legenda e video baixados");
99 90  
100   - requests.postRequest(path, data);
101   - });
  91 + // Callback chamado depois de todas as tarefas
  92 + // Se tiver erro, vai passar para cima
  93 + callback(err);
  94 + });
  95 +}
102 96  
103   - /* Listener que dispara quando a requisição ao core da erro */
104   - child.on('error', function(code, signal){
105   - var path = url.parse(req.body.callback);
106   - var data = querystring.stringify( { 'error': 'Erro na chamada ao core', 'code': code, 'id': id } );
107 97  
108   - requests.postRequest(path, data);
109   - });
  98 +function callCore(id, video, subtitle, req, res) {
110 99  
111   - res.send(200, JSON.stringify({ 'id': id }));
112   - }
113   - });
  100 + /* Cria a linha de comando */
  101 + var command_line = 'vlibras_user/vlibras-core/./vlibras ' + parameters.getServiceType(req.body.servico) + ' ' +
  102 + video.path + ' ' + subtitle.path + ' ' + parameters.getLanguage(req.body.linguagem) +
  103 + ' ' + parameters.getPosition(req.body.posicao) + ' ' + parameters.getSize(req.body.tamanho) + ' ' +
  104 + parameters.getTransparency(req.body.transparencia) + ' ' + id + ' > /tmp/core_log 2>&1';
  105 +
  106 + console.log("=== Core: " + command_line);
  107 +
  108 + core.call(id, command_line, req, res);
114 109 };
115 110  
116 111 module.exports.init = init;
... ...
helpers/core.js 0 → 100644
... ... @@ -0,0 +1,71 @@
  1 +var requests = require('../helpers/requests');
  2 +
  3 +var url = require('url');
  4 +var http = require('http');
  5 +var querystring = require('querystring');
  6 +var exec = require('child_process').exec, child;
  7 +
  8 +function call(id, command_line, req, res) {
  9 + /* Executa a linha de comando */
  10 + child = exec(command_line, function(err, stdout, stderr) {
  11 + // [stdout] = vlibras-core output
  12 + // console.log('Err: ' + err);
  13 + // console.log('STDOUT: ' + stdout);
  14 + // console.log('STDERR: ' + stderr);
  15 + });
  16 +
  17 + // Se o callback não foi definido
  18 + if (req.body.callback === undefined) {
  19 +
  20 + // Se a chamada foi feita com sucesso
  21 + child.on('close', function(code, signal) {
  22 +
  23 + // Se o core executou com erro
  24 + if (code !== 0) {
  25 + throw "Erro no retorno do core. Código: " + code;
  26 + }
  27 +
  28 + // Se o core executou normal
  29 + res.send(200, { 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.flv' });
  30 + });
  31 +
  32 + // Se a chamada deu erro
  33 + child.on('error', function(code, signal) {
  34 + throw "Erro na chamada ao core";
  35 + });
  36 +
  37 +
  38 + // Se o callback foi definido
  39 + } else {
  40 +
  41 + // Se a chamada foi feita com sucesso
  42 + child.on('close', function(code, signal) {
  43 +
  44 + // Endereço do callback
  45 + var path = url.parse(req.body.callback);
  46 +
  47 + // Se o core executou com erro
  48 + if (code === 0) {
  49 + var data = querystring.stringify({ 'response' : 'http://' + properties.SERVER_IP + ':' + properties.port + '/' + id + '.mp4' });
  50 + } else {
  51 + var data = querystring.stringify({ 'error': 'Erro no Core', 'code': code });
  52 + }
  53 +
  54 + // Chama o callback
  55 + requests.postRequest(path, data);
  56 + });
  57 +
  58 + // Se a chamada deu erro
  59 + child.on('error', function(code, signal) {
  60 + var path = url.parse(req.body.callback);
  61 + var data = querystring.stringify( { 'error': 'Erro na chamada ao core', 'code': code, 'id': id } );
  62 +
  63 + requests.postRequest(path, data);
  64 + });
  65 +
  66 + // Retorno da primeira requisição
  67 + res.send(200, JSON.stringify({ 'id': id }));
  68 + }
  69 +}
  70 +
  71 +module.exports.call = call;
0 72 \ No newline at end of file
... ...
helpers/files.js 0 → 100644
... ... @@ -0,0 +1,141 @@
  1 +var fs = require('fs');
  2 +var http = require('http');
  3 +
  4 +/*
  5 +* Função que processa o vídeo (seja baixando, seja pegando o vídeo enviado)
  6 +* Deve retornar um objeto contendo o nome e o caminho
  7 +*/
  8 +function downloadAndMoveVideo(folder, req, locals, callback) {
  9 +
  10 + // Se enviou o arquivo na requisição
  11 + if (req.files.video !== undefined) {
  12 +
  13 + // Se a validação falhar
  14 + if (parameters.checkVideo(req.files.video.name) === false) {
  15 + var error = 'Vídeo enviado com extensão inválida';
  16 + return callback(error);
  17 + }
  18 +
  19 + /* Move o vídeo submetido para a pasta com o seu ID correspondente */
  20 + try {
  21 + fs.renameSync(req.files.video.path, folder + '/' + req.files.video.name);
  22 + } catch (err) {
  23 + callback("Erro ao mover o vídeo submetido: " + err);
  24 + }
  25 +
  26 + // Se não, retorna o vídeo enviado
  27 + locals.video = {
  28 + 'path': folder + '/' + req.files.video.name
  29 + }
  30 +
  31 + return callback();
  32 +
  33 + // Se o arquivo não foi enviado, mas um video_url foi
  34 + } else if (req.body.video_url !== undefined) {
  35 +
  36 + // Requisição para baixar o vídeo
  37 + http.get(req.body.video_url, function(response) {
  38 +
  39 + // Se o vídeo não foi baixado com sucesso
  40 + if (response.statusCode !== 200) {
  41 + var error = 'Problema ao carregar video_url: status ' + response.statusCode;
  42 + return callback(error);
  43 + }
  44 +
  45 + // Nome do arquivo
  46 + var filename = req.body.video_url.substring(req.body.video_url.lastIndexOf('/') + 1);
  47 + var path = folder + '/' + filename;
  48 +
  49 + // Salva o arquivo em disco
  50 + response.pipe(fs.createWriteStream(path));
  51 +
  52 + // Retorna o vídeo baixado
  53 + locals.video = {
  54 + 'path': path
  55 + }
  56 +
  57 + return callback();
  58 +
  59 + // Se deu erro na requisição de baixar o vídeo
  60 + }).on('error', function(e) {
  61 + var error = 'Problema ao carregar video_url: ' + e.message;
  62 + return callback(error);
  63 + });
  64 +
  65 + // Se nem o vídeo foi enviado e nem o video_url foi preenchido
  66 + } else {
  67 + var error = "Video deve ser enviado como parâmetro 'video' ou como 'video_url'";
  68 + return callback(error);
  69 + }
  70 +}
  71 +
  72 +/*
  73 +* Função que processa a legenda (seja baixando, seja pegando o vídeo enviado)
  74 +* Deve retornar um objeto contendo o nome e o caminho
  75 +*/
  76 +function downloadAndMoveSubtitle(folder, req, locals, callback) {
  77 +
  78 + // Se enviou o arquivo na requisição
  79 + if (req.files.legenda !== undefined) {
  80 +
  81 + // Se a validação falhar
  82 + if (parameters.checkSubtitle(req.files.legenda.name) === false) {
  83 + var error = 'Legenda enviado com extensão inválida';
  84 + return callback(error);
  85 + }
  86 +
  87 + /* Move o vídeo submetido para a pasta com o seu ID correspondente */
  88 + try {
  89 + fs.renameSync(req.files.legenda.path, folder + '/' + req.files.legenda.name);
  90 + } catch (err) {
  91 + callback("Erro ao mover a legenda submetida: " + err);
  92 + }
  93 +
  94 + // Se não, retorna o vídeo enviado
  95 + locals.subtitle = {
  96 + 'path': folder + '/' + req.files.legenda.name
  97 + }
  98 +
  99 + return callback();
  100 +
  101 + // Se o arquivo não foi enviado, mas um legenda_url foi
  102 + } else if (req.body.legenda_url !== undefined) {
  103 +
  104 + // Requisição para baixar a legenda
  105 + http.get(req.body.legenda_url, function(response) {
  106 +
  107 + // Se a legenda não foi baixado com sucesso
  108 + if (response.statusCode !== 200) {
  109 + var error = 'Problema ao carregar legenda_url: status ' + response.statusCode;
  110 + return callback(error);
  111 + }
  112 +
  113 + // Nome do arquivo
  114 + var filename = req.body.legenda_url.substring(req.body.legenda_url.lastIndexOf('/') + 1);
  115 + var path = folder + '/' + filename;
  116 +
  117 + // Salva o arquivo em disco
  118 + response.pipe(fs.createWriteStream(path));
  119 +
  120 + // Retorna o vídeo baixado
  121 + locals.subtitle = {
  122 + 'path': path
  123 + }
  124 +
  125 + return callback();
  126 +
  127 + // Se deu erro na requisição de baixar a legenda
  128 + }).on('error', function(e) {
  129 + var error = 'Problema ao carregar legenda_url: ' + e.message;
  130 + return callback(error);
  131 + });
  132 +
  133 + // Se nem a legenda foi enviada e nem a legenda_url foi preenchida
  134 + } else {
  135 + var error = "Legenda deve ser enviada como parâmetro 'legenda' ou como 'legenda_url'";
  136 + return callback(error);
  137 + }
  138 +}
  139 +
  140 +module.exports.downloadAndMoveVideo = downloadAndMoveVideo;
  141 +module.exports.downloadAndMoveSubtitle = downloadAndMoveSubtitle;
0 142 \ No newline at end of file
... ...
helpers/parameters.js
... ... @@ -172,7 +172,7 @@ function check_type(file, accepted_file_types) {
172 172 };
173 173  
174 174 function errorMessage(message) {
175   - return { 'error': message }
  175 + return JSON.stringify({ 'error': message })
176 176 };
177 177  
178 178 module.exports.getServiceType = getServiceType;
... ...
helpers/requests.js
... ... @@ -14,20 +14,21 @@ function postRequest(path, data) {
14 14  
15 15 var requesting = http.request(options, function(res) {
16 16 /* Debugging */
17   - /*
18   - console.log('Callback response status: ' + res.statusCode);
19   - console.log('Callback response headers: ' + JSON.stringify(res.headers));
  17 +
  18 + console.log('== Chamando callback: ' + path.hostname)
  19 + console.log('=== Response status: ' + res.statusCode);
  20 + console.log('=== Response headers: ' + JSON.stringify(res.headers));
20 21  
21 22 res.setEncoding('utf8');
22 23  
23 24 res.on('data', function (chunk) {
24   - console.log('Callback response body: ' + chunk);
  25 + console.log('=== Response body: ' + chunk);
25 26 });
26   - */
  27 +
27 28 });
28 29  
29 30 requesting.on('error', function (e) {
30   - console.log("The callback URL can not be reachable");
  31 + console.log("=== Não foi possível chamar a URL de callback");
31 32 });
32 33  
33 34 requesting.write(data);
... ...
package.json
... ... @@ -10,6 +10,7 @@
10 10 "author": "LAViD",
11 11 "license": "ISC",
12 12 "dependencies": {
  13 + "async": "^0.9.0",
13 14 "express": "~3.5.1",
14 15 "mkdirp": "^0.5.0",
15 16 "node-uuid": "^1.4.1"
... ...
server.js
... ... @@ -7,8 +7,9 @@ var ep_video = require('./endpoints/video');
7 7 var ep_legenda = require('./endpoints/legenda');
8 8 var ep_video_legenda = require('./endpoints/video_legenda');
9 9  
10   -var path = require('path');
11 10 var express = require('express');
  11 +var path = require('path');
  12 +var util = require('util');
12 13 var app = express();
13 14  
14 15 app.use(express.static(path.join(__dirname, '/videos')));
... ... @@ -18,7 +19,11 @@ app.get('/', function(req, res){
18 19 res.send(200, { 'status': 'server is running!' } );
19 20 });
20 21  
21   -app.post('/api', function(req, res){
  22 +app.post('/api', function(req, res) {
  23 + console.log("\n\n\n=============================================");
  24 + console.log("[" + new Date().toISOString() + "] Requisição do IP: " + req.ip);
  25 + console.log("== Parametros: " + util.inspect(req.body));
  26 +
22 27 /* Verifica se o paramêtro [servico] possui algum valor */
23 28 if (req.body.servico !== '') {
24 29 /* Verifica qual é o Tipo de Serviço fornecido */
... ...