-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmedia_server.js
117 lines (106 loc) · 3.39 KB
/
media_server.js
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
const express = require('express');
const VideosController = require('./routes/videosController.js');
const { check, validationResult } = require('express-validator');
const Logger = require('./services/logger');
const app = express();
const { port, clientToken } = require('./config');
//app.use(express.json()) // for parsing application/json
app.use(express.json({
verify : (req, res, buf, encoding) => {
try {
if (req.method != 'DELETE' && req.method != 'GET') {
JSON.parse(buf);
}
} catch(e) {
res.status(400).json({'message': 'Invalid JSON'});
res.end();
return;
}
}
}));
app.use(function (req, res, next) {
if (!req.get('x-client-token')) {
res.status(400).json({'message': 'Client token missing!'});
return;
}
if (req.get('x-client-token') != clientToken) {
res.status(400).json({'message': 'Invalid client token!'});
return;
}
next();
}
);
app.get('/', function(req, res) {
res.send('HelloWorld!');
});
// ------------------- //
// Agregar video a base de datos
// Deberia llegar url y videoId del video
// Responde url timestamp y videoId
app.post('/videos', [
check('videoId').exists(),
check('url').exists().isString()
], function(req, res) {
Logger.logInfo('POST /videos request');
const errors = validationResult(req);
if (!errors.isEmpty()) {
Logger.logWarn('POST /videos: invalid Format');
return res.status(400).json({ errors: errors.array() });
}
const videoId = req.body['videoId'];
const url = req.body['url'];
const videosController = new VideosController();
videosController.postVideo(videoId, url, res);
});
// Obtener la url de un video
// Deberia llegar el videoId
// Responde url, timestamp y videoId
app.get('/videos/:id', [
check('id').exists().isNumeric()
], async function(req, res) {
Logger.logInfo('GET /videos request');
const errors = validationResult(req);
if (!errors.isEmpty()) {
Logger.logWarn('GET /videos: invalid Format');
return res.status(400).json({ errors: errors.array() });
}
const videoId = parseInt(req.params.id);
Logger.logInfo(videoId);
const videosController = new VideosController();
await videosController.getVideo(videoId, res);
});
// Eliminar un video de la base de datos
// Deberia llegar el videoId
app.delete('/videos/:id',[
check('id').exists().isNumeric()
], function(req, res) {
Logger.logInfo('DELETE /videos request');
const errors = validationResult(req);
if (!errors.isEmpty()) {
Logger.logWarn('DELETE /videos: invalid Format');
return res.status(400).json({ errors: errors.array() });
}
const videoId = parseInt(req.params.id);
const videosController = new VideosController();
videosController.getVideo(videoId, res);
});
// Actualizar url de un video
app.put('/videos', [
check('videoId').exists(),
check('url').exists().isString()
]), function(req, res) {
Logger.logInfo('PUT /videos request');
const errors = validationResult(req);
if (!errors.isEmpty()) {
Logger.logWarn('PUT /videos: invalid Format');
return res.status(400).json({ errors: errors.array() });
}
const videoId = req.body['videoId'];
const url = req.body['url'];
const videosController = new VideosController();
videosController.putVideo(videoId, url, res);
}
// ----------------------------------------
app.listen(port, function() {
Logger.logInfo(`Example app listening at: http://localhost:${port}`);
});