const each = require('async/each')
const eachLimit = require('async/eachLimit')
const eachSeries = require('async/eachSeries')
+const series = require('async/series')
const request = require('request')
const waterfall = require('async/waterfall')
const logger = require('../helpers/logger')
const peertubeCrypto = require('../helpers/peertube-crypto')
const requests = require('../helpers/requests')
+const utils = require('../helpers/utils')
const RequestScheduler = require('./request-scheduler')
+const RequestVideoQaduScheduler = require('./request-video-qadu-scheduler')
+const RequestVideoEventScheduler = require('./request-video-event-scheduler')
const ENDPOINT_ACTIONS = constants.REQUEST_ENDPOINT_ACTIONS[constants.REQUEST_ENDPOINTS.VIDEOS]
-const requestScheduler = new RequestScheduler('')
+
+const requestScheduler = new RequestScheduler()
+const requestVideoQaduScheduler = new RequestVideoQaduScheduler()
+const requestVideoEventScheduler = new RequestVideoEventScheduler()
const friends = {
activate,
addVideoToFriends,
updateVideoToFriends,
reportAbuseVideoToFriend,
+ quickAndDirtyUpdateVideoToFriends,
+ quickAndDirtyUpdatesVideoToFriends,
+ addEventToRemoteVideo,
+ addEventsToRemoteVideo,
hasFriends,
makeFriends,
quitFriends,
removeVideoToFriends,
- sendOwnedVideosToPod
+ sendOwnedVideosToPod,
+ getRequestScheduler,
+ getRequestVideoQaduScheduler,
+ getRequestVideoEventScheduler
}
function activate () {
requestScheduler.activate()
+ requestVideoQaduScheduler.activate()
+ requestVideoEventScheduler.activate()
}
function addVideoToFriends (videoData, transaction, callback) {
createRequest(options)
}
+function quickAndDirtyUpdateVideoToFriends (qaduParams, transaction, callback) {
+ const options = {
+ videoId: qaduParams.videoId,
+ type: qaduParams.type,
+ transaction
+ }
+ return createVideoQaduRequest(options, callback)
+}
+
+function quickAndDirtyUpdatesVideoToFriends (qadusParams, transaction, finalCallback) {
+ const tasks = []
+
+ qadusParams.forEach(function (qaduParams) {
+ const fun = function (callback) {
+ quickAndDirtyUpdateVideoToFriends(qaduParams, transaction, callback)
+ }
+
+ tasks.push(fun)
+ })
+
+ series(tasks, finalCallback)
+}
+
+function addEventToRemoteVideo (eventParams, transaction, callback) {
+ const options = {
+ videoId: eventParams.videoId,
+ type: eventParams.type,
+ transaction
+ }
+ createVideoEventRequest(options, callback)
+}
+
+function addEventsToRemoteVideo (eventsParams, transaction, finalCallback) {
+ const tasks = []
+
+ eventsParams.forEach(function (eventParams) {
+ const fun = function (callback) {
+ addEventToRemoteVideo(eventParams, transaction, callback)
+ }
+
+ tasks.push(fun)
+ })
+
+ series(tasks, finalCallback)
+}
+
function hasFriends (callback) {
db.Pod.countAll(function (err, count) {
if (err) return callback(err)
waterfall([
function flushRequests (callbackAsync) {
- requestScheduler.flush(callbackAsync)
+ requestScheduler.flush(err => callbackAsync(err))
+ },
+
+ function flushVideoQaduRequests (callbackAsync) {
+ requestVideoQaduScheduler.flush(err => callbackAsync(err))
},
function getPodsList (callbackAsync) {
})
}
+function getRequestScheduler () {
+ return requestScheduler
+}
+
+function getRequestVideoQaduScheduler () {
+ return requestVideoQaduScheduler
+}
+
+function getRequestVideoEventScheduler () {
+ return requestVideoEventScheduler
+}
+
// ---------------------------------------------------------------------------
module.exports = friends
})
}
+function createVideoQaduRequest (options, callback) {
+ if (!callback) callback = utils.createEmptyCallback()
+
+ requestVideoQaduScheduler.createRequest(options, callback)
+}
+
+function createVideoEventRequest (options, callback) {
+ if (!callback) callback = utils.createEmptyCallback()
+
+ requestVideoEventScheduler.createRequest(options, callback)
+}
+
function isMe (host) {
return host === constants.CONFIG.WEBSERVER.HOST
}