]>
Commit | Line | Data |
---|---|---|
55fa55a9 C |
1 | 'use strict' |
2 | ||
9e167724 | 3 | const has = require('lodash/has') |
e4c87ec2 | 4 | const values = require('lodash/values') |
9e167724 | 5 | |
da691c46 | 6 | const constants = require('../../../initializers/constants') |
55fa55a9 C |
7 | const videosValidators = require('../videos') |
8 | const miscValidators = require('../misc') | |
9 | ||
da691c46 C |
10 | const ENDPOINT_ACTIONS = constants.REQUEST_ENDPOINT_ACTIONS[constants.REQUEST_ENDPOINTS.VIDEOS] |
11 | ||
55fa55a9 | 12 | const remoteVideosValidators = { |
9e167724 | 13 | isEachRemoteRequestVideosValid, |
e4c87ec2 C |
14 | isEachRemoteRequestVideosQaduValid, |
15 | isEachRemoteRequestVideosEventsValid | |
55fa55a9 C |
16 | } |
17 | ||
18 | function isEachRemoteRequestVideosValid (requests) { | |
19 | return miscValidators.isArray(requests) && | |
20 | requests.every(function (request) { | |
21 | const video = request.data | |
e4c87ec2 C |
22 | |
23 | if (!video) return false | |
24 | ||
55fa55a9 C |
25 | return ( |
26 | isRequestTypeAddValid(request.type) && | |
9e167724 | 27 | isCommonVideoAttributesValid(video) && |
55fa55a9 | 28 | videosValidators.isVideoAuthorValid(video.author) && |
da691c46 | 29 | videosValidators.isVideoThumbnailDataValid(video.thumbnailData) |
55fa55a9 C |
30 | ) || |
31 | ( | |
32 | isRequestTypeUpdateValid(request.type) && | |
9e167724 | 33 | isCommonVideoAttributesValid(video) |
55fa55a9 C |
34 | ) || |
35 | ( | |
36 | isRequestTypeRemoveValid(request.type) && | |
55fa55a9 C |
37 | videosValidators.isVideoRemoteIdValid(video.remoteId) |
38 | ) || | |
39 | ( | |
40 | isRequestTypeReportAbuseValid(request.type) && | |
41 | videosValidators.isVideoRemoteIdValid(request.data.videoRemoteId) && | |
42 | videosValidators.isVideoAbuseReasonValid(request.data.reportReason) && | |
43 | videosValidators.isVideoAbuseReporterUsernameValid(request.data.reporterUsername) | |
44 | ) | |
45 | }) | |
46 | } | |
47 | ||
9e167724 C |
48 | function isEachRemoteRequestVideosQaduValid (requests) { |
49 | return miscValidators.isArray(requests) && | |
50 | requests.every(function (request) { | |
51 | const video = request.data | |
52 | ||
e4c87ec2 C |
53 | if (!video) return false |
54 | ||
9e167724 C |
55 | return ( |
56 | videosValidators.isVideoRemoteIdValid(video.remoteId) && | |
57 | (has(video, 'views') === false || videosValidators.isVideoViewsValid) && | |
58 | (has(video, 'likes') === false || videosValidators.isVideoLikesValid) && | |
59 | (has(video, 'dislikes') === false || videosValidators.isVideoDislikesValid) | |
60 | ) | |
61 | }) | |
62 | } | |
63 | ||
e4c87ec2 C |
64 | function isEachRemoteRequestVideosEventsValid (requests) { |
65 | return miscValidators.isArray(requests) && | |
66 | requests.every(function (request) { | |
67 | const eventData = request.data | |
68 | ||
69 | if (!eventData) return false | |
70 | ||
71 | return ( | |
72 | videosValidators.isVideoRemoteIdValid(eventData.remoteId) && | |
73 | values(constants.REQUEST_VIDEO_EVENT_TYPES).indexOf(eventData.eventType) !== -1 && | |
74 | videosValidators.isVideoEventCountValid(eventData.count) | |
75 | ) | |
76 | }) | |
77 | } | |
78 | ||
55fa55a9 C |
79 | // --------------------------------------------------------------------------- |
80 | ||
81 | module.exports = remoteVideosValidators | |
82 | ||
83 | // --------------------------------------------------------------------------- | |
84 | ||
9e167724 | 85 | function isCommonVideoAttributesValid (video) { |
da691c46 C |
86 | return videosValidators.isVideoDateValid(video.createdAt) && |
87 | videosValidators.isVideoDateValid(video.updatedAt) && | |
88 | videosValidators.isVideoDescriptionValid(video.description) && | |
89 | videosValidators.isVideoDurationValid(video.duration) && | |
90 | videosValidators.isVideoInfoHashValid(video.infoHash) && | |
91 | videosValidators.isVideoNameValid(video.name) && | |
92 | videosValidators.isVideoTagsValid(video.tags) && | |
93 | videosValidators.isVideoRemoteIdValid(video.remoteId) && | |
e3d156b3 C |
94 | videosValidators.isVideoExtnameValid(video.extname) && |
95 | videosValidators.isVideoViewsValid(video.views) | |
da691c46 C |
96 | } |
97 | ||
55fa55a9 | 98 | function isRequestTypeAddValid (value) { |
da691c46 | 99 | return value === ENDPOINT_ACTIONS.ADD |
55fa55a9 C |
100 | } |
101 | ||
102 | function isRequestTypeUpdateValid (value) { | |
da691c46 | 103 | return value === ENDPOINT_ACTIONS.UPDATE |
55fa55a9 C |
104 | } |
105 | ||
106 | function isRequestTypeRemoveValid (value) { | |
da691c46 | 107 | return value === ENDPOINT_ACTIONS.REMOVE |
55fa55a9 C |
108 | } |
109 | ||
110 | function isRequestTypeReportAbuseValid (value) { | |
da691c46 | 111 | return value === ENDPOINT_ACTIONS.REPORT_ABUSE |
55fa55a9 | 112 | } |