Server: remote request process refractoring

This commit is contained in:
Chocobozzz 2017-01-17 20:50:02 +01:00
parent 4145c1c689
commit 62f4ef413c
2 changed files with 28 additions and 20 deletions

View File

@ -5,6 +5,7 @@ const express = require('express')
const waterfall = require('async/waterfall') const waterfall = require('async/waterfall')
const db = require('../../../initializers/database') const db = require('../../../initializers/database')
const constants = require('../../../initializers/constants')
const middlewares = require('../../../middlewares') const middlewares = require('../../../middlewares')
const secureMiddleware = middlewares.secure const secureMiddleware = middlewares.secure
const videosValidators = middlewares.validators.remote.videos const videosValidators = middlewares.validators.remote.videos
@ -12,6 +13,15 @@ const signatureValidators = middlewares.validators.remote.signature
const logger = require('../../../helpers/logger') const logger = require('../../../helpers/logger')
const databaseUtils = require('../../../helpers/database-utils') const databaseUtils = require('../../../helpers/database-utils')
const ENDPOINT_ACTIONS = constants.REQUEST_ENDPOINT_ACTIONS[constants.REQUEST_ENDPOINTS.VIDEOS]
// Functions to call when processing a remote request
const functionsHash = {}
functionsHash[ENDPOINT_ACTIONS.ADD] = addRemoteVideoRetryWrapper
functionsHash[ENDPOINT_ACTIONS.UPDATE] = updateRemoteVideoRetryWrapper
functionsHash[ENDPOINT_ACTIONS.REMOVE] = removeRemoteVideo
functionsHash[ENDPOINT_ACTIONS.REPORT_ABUSE] = reportAbuseRemoteVideo
const router = express.Router() const router = express.Router()
router.post('/', router.post('/',
@ -36,26 +46,14 @@ function remoteVideos (req, res, next) {
eachSeries(requests, function (request, callbackEach) { eachSeries(requests, function (request, callbackEach) {
const data = request.data const data = request.data
switch (request.type) { // Get the function we need to call in order to process the request
case 'add': const fun = functionsHash[request.type]
addRemoteVideoRetryWrapper(data, fromPod, callbackEach) if (fun === undefined) {
break logger.error('Unkown remote request type %s.', request.type)
return callbackEach(null)
case 'update':
updateRemoteVideoRetryWrapper(data, fromPod, callbackEach)
break
case 'remove':
removeRemoteVideo(data, fromPod, callbackEach)
break
case 'report-abuse':
reportAbuseRemoteVideo(data, fromPod, callbackEach)
break
default:
logger.error('Unkown remote request type %s.', request.type)
} }
fun.call(this, data, fromPod, callbackEach)
}, function (err) { }, function (err) {
if (err) logger.error('Error managing remote videos.', { error: err }) if (err) logger.error('Error managing remote videos.', { error: err })
}) })
@ -141,7 +139,9 @@ function addRemoteVideo (videoToCreateData, fromPod, finalCallback) {
}, },
function associateTagsToVideo (t, tagInstances, video, callback) { function associateTagsToVideo (t, tagInstances, video, callback) {
const options = { transaction: t } const options = {
transaction: t
}
video.setTags(tagInstances, options).asCallback(function (err) { video.setTags(tagInstances, options).asCallback(function (err) {
return callback(err, t) return callback(err, t)

View File

@ -119,6 +119,13 @@ const RETRY_REQUESTS = 5
const REQUEST_ENDPOINTS = { const REQUEST_ENDPOINTS = {
VIDEOS: 'videos' VIDEOS: 'videos'
} }
const REQUEST_ENDPOINT_ACTIONS = {}
REQUEST_ENDPOINT_ACTIONS[REQUEST_ENDPOINTS.VIDEOS] = {
ADD: 'add',
UPDATE: 'update',
REMOVE: 'remove',
REPORT_ABUSE: 'report-abuse'
}
const REMOTE_SCHEME = { const REMOTE_SCHEME = {
HTTP: 'https', HTTP: 'https',
@ -184,6 +191,7 @@ module.exports = {
PREVIEWS_SIZE, PREVIEWS_SIZE,
REMOTE_SCHEME, REMOTE_SCHEME,
REQUEST_ENDPOINTS, REQUEST_ENDPOINTS,
REQUEST_ENDPOINT_ACTIONS,
REQUESTS_IN_PARALLEL, REQUESTS_IN_PARALLEL,
REQUESTS_INTERVAL, REQUESTS_INTERVAL,
REQUESTS_LIMIT_PODS, REQUESTS_LIMIT_PODS,