]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/helpers/custom-validators/remote/videos.js
ee68ebc10d05b997141036bfa3e33608292ba612
[github/Chocobozzz/PeerTube.git] / server / helpers / custom-validators / remote / videos.js
1 'use strict'
2
3 const constants = require('../../../initializers/constants')
4 const videosValidators = require('../videos')
5 const miscValidators = require('../misc')
6
7 const ENDPOINT_ACTIONS = constants.REQUEST_ENDPOINT_ACTIONS[constants.REQUEST_ENDPOINTS.VIDEOS]
8
9 const remoteVideosValidators = {
10 isEachRemoteRequestVideosValid
11 }
12
13 function isEachRemoteRequestVideosValid (requests) {
14 return miscValidators.isArray(requests) &&
15 requests.every(function (request) {
16 const video = request.data
17 return (
18 isRequestTypeAddValid(request.type) &&
19 isCommonVideoAttrbiutesValid(video) &&
20 videosValidators.isVideoAuthorValid(video.author) &&
21 videosValidators.isVideoThumbnailDataValid(video.thumbnailData)
22 ) ||
23 (
24 isRequestTypeUpdateValid(request.type) &&
25 isCommonVideoAttrbiutesValid(video)
26 ) ||
27 (
28 isRequestTypeRemoveValid(request.type) &&
29 videosValidators.isVideoRemoteIdValid(video.remoteId)
30 ) ||
31 (
32 isRequestTypeReportAbuseValid(request.type) &&
33 videosValidators.isVideoRemoteIdValid(request.data.videoRemoteId) &&
34 videosValidators.isVideoAbuseReasonValid(request.data.reportReason) &&
35 videosValidators.isVideoAbuseReporterUsernameValid(request.data.reporterUsername)
36 )
37 })
38 }
39
40 // ---------------------------------------------------------------------------
41
42 module.exports = remoteVideosValidators
43
44 // ---------------------------------------------------------------------------
45
46 function isCommonVideoAttrbiutesValid (video) {
47 return videosValidators.isVideoDateValid(video.createdAt) &&
48 videosValidators.isVideoDateValid(video.updatedAt) &&
49 videosValidators.isVideoDescriptionValid(video.description) &&
50 videosValidators.isVideoDurationValid(video.duration) &&
51 videosValidators.isVideoInfoHashValid(video.infoHash) &&
52 videosValidators.isVideoNameValid(video.name) &&
53 videosValidators.isVideoTagsValid(video.tags) &&
54 videosValidators.isVideoRemoteIdValid(video.remoteId) &&
55 videosValidators.isVideoExtnameValid(video.extname)
56 }
57
58 function isRequestTypeAddValid (value) {
59 return value === ENDPOINT_ACTIONS.ADD
60 }
61
62 function isRequestTypeUpdateValid (value) {
63 return value === ENDPOINT_ACTIONS.UPDATE
64 }
65
66 function isRequestTypeRemoveValid (value) {
67 return value === ENDPOINT_ACTIONS.REMOVE
68 }
69
70 function isRequestTypeReportAbuseValid (value) {
71 return value === ENDPOINT_ACTIONS.REPORT_ABUSE
72 }