]>
Commit | Line | Data |
---|---|---|
1 | 'use strict' | |
2 | ||
3 | const has = require('lodash/has') | |
4 | const values = require('lodash/values') | |
5 | ||
6 | const constants = require('../../../initializers/constants') | |
7 | const videosValidators = require('../videos') | |
8 | const miscValidators = require('../misc') | |
9 | ||
10 | const ENDPOINT_ACTIONS = constants.REQUEST_ENDPOINT_ACTIONS[constants.REQUEST_ENDPOINTS.VIDEOS] | |
11 | ||
12 | const remoteVideosValidators = { | |
13 | isEachRemoteRequestVideosValid, | |
14 | isEachRemoteRequestVideosQaduValid, | |
15 | isEachRemoteRequestVideosEventsValid | |
16 | } | |
17 | ||
18 | function isEachRemoteRequestVideosValid (requests) { | |
19 | return miscValidators.isArray(requests) && | |
20 | requests.every(function (request) { | |
21 | const video = request.data | |
22 | ||
23 | if (!video) return false | |
24 | ||
25 | return ( | |
26 | isRequestTypeAddValid(request.type) && | |
27 | isCommonVideoAttributesValid(video) && | |
28 | videosValidators.isVideoAuthorValid(video.author) && | |
29 | videosValidators.isVideoThumbnailDataValid(video.thumbnailData) | |
30 | ) || | |
31 | ( | |
32 | isRequestTypeUpdateValid(request.type) && | |
33 | isCommonVideoAttributesValid(video) | |
34 | ) || | |
35 | ( | |
36 | isRequestTypeRemoveValid(request.type) && | |
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 | ||
48 | function isEachRemoteRequestVideosQaduValid (requests) { | |
49 | return miscValidators.isArray(requests) && | |
50 | requests.every(function (request) { | |
51 | const video = request.data | |
52 | ||
53 | if (!video) return false | |
54 | ||
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 | ||
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 | ||
79 | // --------------------------------------------------------------------------- | |
80 | ||
81 | module.exports = remoteVideosValidators | |
82 | ||
83 | // --------------------------------------------------------------------------- | |
84 | ||
85 | function isCommonVideoAttributesValid (video) { | |
86 | return videosValidators.isVideoDateValid(video.createdAt) && | |
87 | videosValidators.isVideoDateValid(video.updatedAt) && | |
88 | videosValidators.isVideoCategoryValid(video.category) && | |
89 | videosValidators.isVideoLicenceValid(video.licence) && | |
90 | videosValidators.isVideoNSFWValid(video.nsfw) && | |
91 | videosValidators.isVideoDescriptionValid(video.description) && | |
92 | videosValidators.isVideoDurationValid(video.duration) && | |
93 | videosValidators.isVideoInfoHashValid(video.infoHash) && | |
94 | videosValidators.isVideoNameValid(video.name) && | |
95 | videosValidators.isVideoTagsValid(video.tags) && | |
96 | videosValidators.isVideoRemoteIdValid(video.remoteId) && | |
97 | videosValidators.isVideoExtnameValid(video.extname) && | |
98 | videosValidators.isVideoViewsValid(video.views) && | |
99 | videosValidators.isVideoLikesValid(video.likes) && | |
100 | videosValidators.isVideoDislikesValid(video.dislikes) | |
101 | } | |
102 | ||
103 | function isRequestTypeAddValid (value) { | |
104 | return value === ENDPOINT_ACTIONS.ADD | |
105 | } | |
106 | ||
107 | function isRequestTypeUpdateValid (value) { | |
108 | return value === ENDPOINT_ACTIONS.UPDATE | |
109 | } | |
110 | ||
111 | function isRequestTypeRemoveValid (value) { | |
112 | return value === ENDPOINT_ACTIONS.REMOVE | |
113 | } | |
114 | ||
115 | function isRequestTypeReportAbuseValid (value) { | |
116 | return value === ENDPOINT_ACTIONS.REPORT_ABUSE | |
117 | } |