]>
Commit | Line | Data |
---|---|---|
1 | ;(function () { | |
2 | 'use strict' | |
3 | ||
4 | var checkErrors = require('./utils').checkErrors | |
5 | var VideosDB = require('../../src/database').VideosDB | |
6 | var logger = require('../../src/logger') | |
7 | ||
8 | var videos = {} | |
9 | ||
10 | function findVideoById (id, callback) { | |
11 | VideosDB.findById(id, { _id: 1, namePath: 1 }).limit(1).exec(function (err, video) { | |
12 | if (err) throw err | |
13 | ||
14 | callback(video) | |
15 | }) | |
16 | } | |
17 | ||
18 | videos.videosSearch = function (req, res, next) { | |
19 | req.checkParams('name', 'Should have a name').notEmpty() | |
20 | ||
21 | logger.debug('Checking videosSearch parameters', { parameters: req.params }) | |
22 | ||
23 | checkErrors(req, res, next) | |
24 | } | |
25 | ||
26 | videos.videosAdd = function (req, res, next) { | |
27 | req.checkFiles('input_video.originalname', 'Should have an input video').notEmpty() | |
28 | req.checkFiles('input_video.mimetype', 'Should have a correct mime type').matches(/video\/(webm)|(mp4)|(ogg)/i) | |
29 | req.checkBody('name', 'Should have a name').isLength(1, 50) | |
30 | req.checkBody('description', 'Should have a description').isLength(1, 250) | |
31 | ||
32 | logger.debug('Checking videosAdd parameters', { parameters: req.body, files: req.files }) | |
33 | ||
34 | checkErrors(req, res, next) | |
35 | } | |
36 | ||
37 | videos.videosGet = function (req, res, next) { | |
38 | req.checkParams('id', 'Should have a valid id').notEmpty().isMongoId() | |
39 | ||
40 | logger.debug('Checking videosGet parameters', { parameters: req.params }) | |
41 | ||
42 | checkErrors(req, res, function () { | |
43 | findVideoById(req.params.id, function (video) { | |
44 | if (!video) return res.status(404).send('Video not found') | |
45 | ||
46 | next() | |
47 | }) | |
48 | }) | |
49 | } | |
50 | ||
51 | videos.videosRemove = function (req, res, next) { | |
52 | req.checkParams('id', 'Should have a valid id').notEmpty().isMongoId() | |
53 | ||
54 | logger.debug('Checking videosRemove parameters', { parameters: req.params }) | |
55 | ||
56 | checkErrors(req, res, function () { | |
57 | findVideoById(req.params.id, function (video) { | |
58 | if (!video) return res.status(404).send('Video not found') | |
59 | else if (video.namePath === null) return res.status(403).send('Cannot remove video of another pod') | |
60 | ||
61 | next() | |
62 | }) | |
63 | }) | |
64 | } | |
65 | ||
66 | module.exports = videos | |
67 | })() |