From 9e167724f7e933f41d9ea2e1c31772bf4c560a28 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 21 Feb 2017 21:35:59 +0100 Subject: Server: make a basic "quick and dirty update" for videos 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 --- server/helpers/custom-validators/remote/videos.js | 25 +++++++++++++++++++---- server/helpers/custom-validators/videos.js | 17 ++++++++++++++- server/helpers/requests.js | 2 ++ 3 files changed, 39 insertions(+), 5 deletions(-) (limited to 'server/helpers') diff --git a/server/helpers/custom-validators/remote/videos.js b/server/helpers/custom-validators/remote/videos.js index ee68ebc10..2e9cf822e 100644 --- a/server/helpers/custom-validators/remote/videos.js +++ b/server/helpers/custom-validators/remote/videos.js @@ -1,5 +1,7 @@ 'use strict' +const has = require('lodash/has') + const constants = require('../../../initializers/constants') const videosValidators = require('../videos') const miscValidators = require('../misc') @@ -7,7 +9,8 @@ const miscValidators = require('../misc') const ENDPOINT_ACTIONS = constants.REQUEST_ENDPOINT_ACTIONS[constants.REQUEST_ENDPOINTS.VIDEOS] const remoteVideosValidators = { - isEachRemoteRequestVideosValid + isEachRemoteRequestVideosValid, + isEachRemoteRequestVideosQaduValid } function isEachRemoteRequestVideosValid (requests) { @@ -16,13 +19,13 @@ function isEachRemoteRequestVideosValid (requests) { const video = request.data return ( isRequestTypeAddValid(request.type) && - isCommonVideoAttrbiutesValid(video) && + isCommonVideoAttributesValid(video) && videosValidators.isVideoAuthorValid(video.author) && videosValidators.isVideoThumbnailDataValid(video.thumbnailData) ) || ( isRequestTypeUpdateValid(request.type) && - isCommonVideoAttrbiutesValid(video) + isCommonVideoAttributesValid(video) ) || ( isRequestTypeRemoveValid(request.type) && @@ -37,13 +40,27 @@ function isEachRemoteRequestVideosValid (requests) { }) } +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 isCommonVideoAttrbiutesValid (video) { +function isCommonVideoAttributesValid (video) { return videosValidators.isVideoDateValid(video.createdAt) && videosValidators.isVideoDateValid(video.updatedAt) && videosValidators.isVideoDescriptionValid(video.description) && diff --git a/server/helpers/custom-validators/videos.js b/server/helpers/custom-validators/videos.js index e2d2c8e6d..1d844118b 100644 --- a/server/helpers/custom-validators/videos.js +++ b/server/helpers/custom-validators/videos.js @@ -22,7 +22,10 @@ const videosValidators = { isVideoRemoteIdValid, isVideoAbuseReasonValid, isVideoAbuseReporterUsernameValid, - isVideoFile + isVideoFile, + isVideoViewsValid, + isVideoLikesValid, + isVideoDislikesValid } function isVideoAuthorValid (value) { @@ -82,6 +85,18 @@ function isVideoAbuseReporterUsernameValid (value) { return usersValidators.isUserUsernameValid(value) } +function isVideoViewsValid (value) { + return validator.isInt(value, { min: 0 }) +} + +function isVideoLikesValid (value) { + return validator.isInt(value, { min: 0 }) +} + +function isVideoDislikesValid (value) { + return validator.isInt(value, { min: 0 }) +} + function isVideoFile (value, files) { // Should have files if (!files) return false diff --git a/server/helpers/requests.js b/server/helpers/requests.js index 095b95e1c..427864117 100644 --- a/server/helpers/requests.js +++ b/server/helpers/requests.js @@ -58,6 +58,8 @@ function makeSecureRequest (params, callback) { requestParams.json.data = params.data } + console.log(requestParams.json.data) + request.post(requestParams, callback) } -- cgit v1.2.3