3 const has
= require('lodash/has')
4 const values
= require('lodash/values')
6 const constants
= require('../../../initializers/constants')
7 const videosValidators
= require('../videos')
8 const miscValidators
= require('../misc')
10 const ENDPOINT_ACTIONS
= constants
.REQUEST_ENDPOINT_ACTIONS
[constants
.REQUEST_ENDPOINTS
.VIDEOS
]
12 const remoteVideosValidators
= {
13 isEachRemoteRequestVideosValid
,
14 isEachRemoteRequestVideosQaduValid
,
15 isEachRemoteRequestVideosEventsValid
18 function isEachRemoteRequestVideosValid (requests
) {
19 return miscValidators
.isArray(requests
) &&
20 requests
.every(function (request
) {
21 const video
= request
.data
23 if (!video
) return false
26 isRequestTypeAddValid(request
.type
) &&
27 isCommonVideoAttributesValid(video
) &&
28 videosValidators
.isVideoAuthorValid(video
.author
) &&
29 videosValidators
.isVideoThumbnailDataValid(video
.thumbnailData
)
32 isRequestTypeUpdateValid(request
.type
) &&
33 isCommonVideoAttributesValid(video
)
36 isRequestTypeRemoveValid(request
.type
) &&
37 videosValidators
.isVideoRemoteIdValid(video
.remoteId
)
40 isRequestTypeReportAbuseValid(request
.type
) &&
41 videosValidators
.isVideoRemoteIdValid(request
.data
.videoRemoteId
) &&
42 videosValidators
.isVideoAbuseReasonValid(request
.data
.reportReason
) &&
43 videosValidators
.isVideoAbuseReporterUsernameValid(request
.data
.reporterUsername
)
48 function isEachRemoteRequestVideosQaduValid (requests
) {
49 return miscValidators
.isArray(requests
) &&
50 requests
.every(function (request
) {
51 const video
= request
.data
53 if (!video
) return false
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
)
64 function isEachRemoteRequestVideosEventsValid (requests
) {
65 return miscValidators
.isArray(requests
) &&
66 requests
.every(function (request
) {
67 const eventData
= request
.data
69 if (!eventData
) return false
72 videosValidators
.isVideoRemoteIdValid(eventData
.remoteId
) &&
73 values(constants
.REQUEST_VIDEO_EVENT_TYPES
).indexOf(eventData
.eventType
) !== -1 &&
74 videosValidators
.isVideoEventCountValid(eventData
.count
)
79 // ---------------------------------------------------------------------------
81 module
.exports
= remoteVideosValidators
83 // ---------------------------------------------------------------------------
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
.isVideoDescriptionValid(video
.description
) &&
91 videosValidators
.isVideoDurationValid(video
.duration
) &&
92 videosValidators
.isVideoInfoHashValid(video
.infoHash
) &&
93 videosValidators
.isVideoNameValid(video
.name
) &&
94 videosValidators
.isVideoTagsValid(video
.tags
) &&
95 videosValidators
.isVideoRemoteIdValid(video
.remoteId
) &&
96 videosValidators
.isVideoExtnameValid(video
.extname
) &&
97 videosValidators
.isVideoViewsValid(video
.views
) &&
98 videosValidators
.isVideoLikesValid(video
.likes
) &&
99 videosValidators
.isVideoDislikesValid(video
.dislikes
)
102 function isRequestTypeAddValid (value
) {
103 return value
=== ENDPOINT_ACTIONS
.ADD
106 function isRequestTypeUpdateValid (value
) {
107 return value
=== ENDPOINT_ACTIONS
.UPDATE
110 function isRequestTypeRemoveValid (value
) {
111 return value
=== ENDPOINT_ACTIONS
.REMOVE
114 function isRequestTypeReportAbuseValid (value
) {
115 return value
=== ENDPOINT_ACTIONS
.REPORT_ABUSE