files.js
4.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
var parameters = require('../helpers/parameters');
var http = require('http');
var fs = require('fs');
/*
* Função que processa o vídeo (seja baixando, seja pegando o vídeo enviado)
* Deve retornar um objeto contendo o nome e o caminho
*/
function downloadAndMoveVideo(folder, req, locals, callback) {
// Se enviou o arquivo na requisição
if (req.files.video !== undefined) {
// Se a validação falhar
if (parameters.checkVideo(req.files.video.name) === false) {
var error = 'Vídeo enviado com extensão inválida';
return callback(error);
}
/* Move o vídeo submetido para a pasta com o seu ID correspondente */
try {
fs.renameSync(req.files.video.path, folder + '/' + req.files.video.name);
} catch (err) {
callback("Erro ao mover o vídeo submetido: " + err);
}
// Se não, retorna o vídeo enviado
locals.video = {
'path': folder + '/' + req.files.video.name
}
return callback();
// Se o arquivo não foi enviado, mas um video_url foi
} else if (req.body.video_url !== undefined) {
// Requisição para baixar o vídeo
http.get(req.body.video_url, function(response) {
// Se o vídeo não foi baixado com sucesso
if (response.statusCode !== 200) {
var error = 'Problema ao carregar video_url: status ' + response.statusCode;
return callback(error);
}
// Nome do arquivo
var filename = req.body.video_url.substring(req.body.video_url.lastIndexOf('/') + 1);
// Tira os parâmetros HTTP
if (filename.lastIndexOf("?") !== -1) {
filename = filename.substring(0, filename.lastIndexOf("?"));
}
var path = folder + '/' + filename;
// Salva o arquivo em disco
response.pipe(fs.createWriteStream(path));
// Retorna o vídeo baixado
locals.video = {
'path': path
}
return callback();
// Se deu erro na requisição de baixar o vídeo
}).on('error', function(e) {
var error = 'Problema ao carregar video_url: ' + e.message;
return callback(error);
});
// Se nem o vídeo foi enviado e nem o video_url foi preenchido
} else {
var error = "Video deve ser enviado como parâmetro 'video' ou como 'video_url'";
return callback(error);
}
}
/*
* Função que processa a legenda (seja baixando, seja pegando o vídeo enviado)
* Deve retornar um objeto contendo o nome e o caminho
*/
function downloadAndMoveSubtitle(folder, req, locals, callback) {
// Se enviou o arquivo na requisição
if (req.files.legenda !== undefined) {
// Se a validação falhar
if (parameters.checkSubtitle(req.files.legenda.name) === false) {
var error = 'Legenda enviado com extensão inválida';
return callback(error);
}
/* Move o vídeo submetido para a pasta com o seu ID correspondente */
try {
fs.renameSync(req.files.legenda.path, folder + '/' + req.files.legenda.name);
} catch (err) {
callback("Erro ao mover a legenda submetida: " + err);
}
// Se não, retorna o vídeo enviado
locals.subtitle = {
'path': folder + '/' + req.files.legenda.name
}
return callback();
// Se o arquivo não foi enviado, mas um legenda_url foi
} else if (req.body.legenda_url !== undefined) {
// Requisição para baixar a legenda
http.get(req.body.legenda_url, function(response) {
// Se a legenda não foi baixado com sucesso
if (response.statusCode !== 200) {
var error = 'Problema ao carregar legenda_url: status ' + response.statusCode;
return callback(error);
}
// Nome do arquivo
var filename = req.body.legenda_url.substring(req.body.legenda_url.lastIndexOf('/') + 1);
// Tira os parâmetros HTTP
if (filename.lastIndexOf("?") !== -1) {
filename = filename.substring(0, filename.lastIndexOf("?"));
}
var path = folder + '/' + filename;
// Salva o arquivo em disco
response.pipe(fs.createWriteStream(path));
// Retorna o vídeo baixado
locals.subtitle = {
'path': path
}
return callback();
// Se deu erro na requisição de baixar a legenda
}).on('error', function(e) {
var error = 'Problema ao carregar legenda_url: ' + e.message;
return callback(error);
});
// Se nem a legenda foi enviada e nem a legenda_url foi preenchida
} else {
var error = "Legenda deve ser enviada como parâmetro 'legenda' ou como 'legenda_url'";
return callback(error);
}
}
module.exports.downloadAndMoveVideo = downloadAndMoveVideo;
module.exports.downloadAndMoveSubtitle = downloadAndMoveSubtitle;