
This system will be useful to to update some int video attributes (likes, dislikes, views...) The classic system is not used because we need some optimization for scaling
90 lines
3.0 KiB
JavaScript
90 lines
3.0 KiB
JavaScript
'use strict'
|
|
|
|
const has = require('lodash/has')
|
|
|
|
const constants = require('../../../initializers/constants')
|
|
const videosValidators = require('../videos')
|
|
const miscValidators = require('../misc')
|
|
|
|
const ENDPOINT_ACTIONS = constants.REQUEST_ENDPOINT_ACTIONS[constants.REQUEST_ENDPOINTS.VIDEOS]
|
|
|
|
const remoteVideosValidators = {
|
|
isEachRemoteRequestVideosValid,
|
|
isEachRemoteRequestVideosQaduValid
|
|
}
|
|
|
|
function isEachRemoteRequestVideosValid (requests) {
|
|
return miscValidators.isArray(requests) &&
|
|
requests.every(function (request) {
|
|
const video = request.data
|
|
return (
|
|
isRequestTypeAddValid(request.type) &&
|
|
isCommonVideoAttributesValid(video) &&
|
|
videosValidators.isVideoAuthorValid(video.author) &&
|
|
videosValidators.isVideoThumbnailDataValid(video.thumbnailData)
|
|
) ||
|
|
(
|
|
isRequestTypeUpdateValid(request.type) &&
|
|
isCommonVideoAttributesValid(video)
|
|
) ||
|
|
(
|
|
isRequestTypeRemoveValid(request.type) &&
|
|
videosValidators.isVideoRemoteIdValid(video.remoteId)
|
|
) ||
|
|
(
|
|
isRequestTypeReportAbuseValid(request.type) &&
|
|
videosValidators.isVideoRemoteIdValid(request.data.videoRemoteId) &&
|
|
videosValidators.isVideoAbuseReasonValid(request.data.reportReason) &&
|
|
videosValidators.isVideoAbuseReporterUsernameValid(request.data.reporterUsername)
|
|
)
|
|
})
|
|
}
|
|
|
|
function isEachRemoteRequestVideosQaduValid (requests) {
|
|
return miscValidators.isArray(requests) &&
|
|
requests.every(function (request) {
|
|
const video = request.data
|
|
|
|
return (
|
|
videosValidators.isVideoRemoteIdValid(video.remoteId) &&
|
|
(has(video, 'views') === false || videosValidators.isVideoViewsValid) &&
|
|
(has(video, 'likes') === false || videosValidators.isVideoLikesValid) &&
|
|
(has(video, 'dislikes') === false || videosValidators.isVideoDislikesValid)
|
|
)
|
|
})
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
module.exports = remoteVideosValidators
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
function isCommonVideoAttributesValid (video) {
|
|
return videosValidators.isVideoDateValid(video.createdAt) &&
|
|
videosValidators.isVideoDateValid(video.updatedAt) &&
|
|
videosValidators.isVideoDescriptionValid(video.description) &&
|
|
videosValidators.isVideoDurationValid(video.duration) &&
|
|
videosValidators.isVideoInfoHashValid(video.infoHash) &&
|
|
videosValidators.isVideoNameValid(video.name) &&
|
|
videosValidators.isVideoTagsValid(video.tags) &&
|
|
videosValidators.isVideoRemoteIdValid(video.remoteId) &&
|
|
videosValidators.isVideoExtnameValid(video.extname)
|
|
}
|
|
|
|
function isRequestTypeAddValid (value) {
|
|
return value === ENDPOINT_ACTIONS.ADD
|
|
}
|
|
|
|
function isRequestTypeUpdateValid (value) {
|
|
return value === ENDPOINT_ACTIONS.UPDATE
|
|
}
|
|
|
|
function isRequestTypeRemoveValid (value) {
|
|
return value === ENDPOINT_ACTIONS.REMOVE
|
|
}
|
|
|
|
function isRequestTypeReportAbuseValid (value) {
|
|
return value === ENDPOINT_ACTIONS.REPORT_ABUSE
|
|
}
|