]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/middlewares/reqValidators/videos.js
c20660452639645667c878603442cd6948de6ce0
[github/Chocobozzz/PeerTube.git] / server / middlewares / reqValidators / videos.js
1 'use strict'
2
3 const checkErrors = require('./utils').checkErrors
4 const logger = require('../../helpers/logger')
5 const videos = require('../../lib/videos')
6 const Videos = require('../../models/videos')
7
8 const reqValidatorsVideos = {
9 videosAdd: videosAdd,
10 videosGet: videosGet,
11 videosRemove: videosRemove,
12 videosSearch: videosSearch
13 }
14
15 function videosAdd (req, res, next) {
16 req.checkFiles('videofile[0].originalname', 'Should have an input video').notEmpty()
17 req.checkFiles('videofile[0].mimetype', 'Should have a correct mime type').matches(/video\/(webm)|(mp4)|(ogg)/i)
18 req.checkBody('name', 'Should have a name').isLength(1, 50)
19 req.checkBody('description', 'Should have a description').isLength(1, 250)
20
21 logger.debug('Checking videosAdd parameters', { parameters: req.body, files: req.files })
22
23 checkErrors(req, res, next)
24 }
25
26 function videosGet (req, res, next) {
27 req.checkParams('id', 'Should have a valid id').notEmpty().isMongoId()
28
29 logger.debug('Checking videosGet parameters', { parameters: req.params })
30
31 checkErrors(req, res, function () {
32 Videos.get(req.params.id, function (err, video) {
33 if (err) {
34 logger.error('Error in videosGet request validator.', { error: err })
35 res.sendStatus(500)
36 }
37
38 const state = videos.getVideoState(video)
39 if (state.exist === false) return res.status(404).send('Video not found')
40
41 next()
42 })
43 })
44 }
45
46 function videosRemove (req, res, next) {
47 req.checkParams('id', 'Should have a valid id').notEmpty().isMongoId()
48
49 logger.debug('Checking videosRemove parameters', { parameters: req.params })
50
51 checkErrors(req, res, function () {
52 Videos.get(req.params.id, function (err, video) {
53 if (err) {
54 logger.error('Error in videosRemove request validator.', { error: err })
55 res.sendStatus(500)
56 }
57
58 const state = videos.getVideoState(video)
59 if (state.exist === false) return res.status(404).send('Video not found')
60 else if (state.owned === false) return res.status(403).send('Cannot remove video of another pod')
61
62 next()
63 })
64 })
65 }
66
67 function videosSearch (req, res, next) {
68 req.checkParams('name', 'Should have a name').notEmpty()
69
70 logger.debug('Checking videosSearch parameters', { parameters: req.params })
71
72 checkErrors(req, res, next)
73 }
74
75 // ---------------------------------------------------------------------------
76
77 module.exports = reqValidatorsVideos