Server: add config endpoint
[oweals/peertube.git] / server / lib / friends.js
index 203f0e52c2912261b1da7c8559f853a518c3e047..23accfa453168ff72dda8efbf884a41b35f3bea3 100644 (file)
@@ -3,6 +3,7 @@
 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')
 
@@ -19,8 +20,8 @@ const RequestVideoEventScheduler = require('./request-video-event-scheduler')
 const ENDPOINT_ACTIONS = constants.REQUEST_ENDPOINT_ACTIONS[constants.REQUEST_ENDPOINTS.VIDEOS]
 
 const requestScheduler = new RequestScheduler()
-const requestSchedulerVideoQadu = new RequestVideoQaduScheduler()
-const requestSchedulerVideoEvent = new RequestVideoEventScheduler()
+const requestVideoQaduScheduler = new RequestVideoQaduScheduler()
+const requestVideoEventScheduler = new RequestVideoEventScheduler()
 
 const friends = {
   activate,
@@ -28,18 +29,23 @@ const friends = {
   updateVideoToFriends,
   reportAbuseVideoToFriend,
   quickAndDirtyUpdateVideoToFriends,
+  quickAndDirtyUpdatesVideoToFriends,
   addEventToRemoteVideo,
+  addEventsToRemoteVideo,
   hasFriends,
   makeFriends,
   quitFriends,
   removeVideoToFriends,
-  sendOwnedVideosToPod
+  sendOwnedVideosToPod,
+  getRequestScheduler,
+  getRequestVideoQaduScheduler,
+  getRequestVideoEventScheduler
 }
 
 function activate () {
   requestScheduler.activate()
-  requestSchedulerVideoQadu.activate()
-  requestSchedulerVideoEvent.activate()
+  requestVideoQaduScheduler.activate()
+  requestVideoEventScheduler.activate()
 }
 
 function addVideoToFriends (videoData, transaction, callback) {
@@ -81,24 +87,52 @@ function reportAbuseVideoToFriend (reportData, video) {
   createRequest(options)
 }
 
-function quickAndDirtyUpdateVideoToFriends (videoId, type, transaction, callback) {
+function quickAndDirtyUpdateVideoToFriends (qaduParams, transaction, callback) {
   const options = {
-    videoId,
-    type,
+    videoId: qaduParams.videoId,
+    type: qaduParams.type,
     transaction
   }
   return createVideoQaduRequest(options, callback)
 }
 
-function addEventToRemoteVideo (videoId, type, transaction, 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,
-    type,
+    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)
@@ -142,7 +176,7 @@ function quitFriends (callback) {
     },
 
     function flushVideoQaduRequests (callbackAsync) {
-      requestSchedulerVideoQadu.flush(err => callbackAsync(err))
+      requestVideoQaduScheduler.flush(err => callbackAsync(err))
     },
 
     function getPodsList (callbackAsync) {
@@ -215,6 +249,18 @@ function sendOwnedVideosToPod (podId) {
   })
 }
 
+function getRequestScheduler () {
+  return requestScheduler
+}
+
+function getRequestVideoQaduScheduler () {
+  return requestVideoQaduScheduler
+}
+
+function getRequestVideoEventScheduler () {
+  return requestVideoEventScheduler
+}
+
 // ---------------------------------------------------------------------------
 
 module.exports = friends
@@ -345,13 +391,13 @@ function createRequest (options, callback) {
 function createVideoQaduRequest (options, callback) {
   if (!callback) callback = utils.createEmptyCallback()
 
-  requestSchedulerVideoQadu.createRequest(options, callback)
+  requestVideoQaduScheduler.createRequest(options, callback)
 }
 
 function createVideoEventRequest (options, callback) {
   if (!callback) callback = utils.createEmptyCallback()
 
-  requestSchedulerVideoEvent.createRequest(options, callback)
+  requestVideoEventScheduler.createRequest(options, callback)
 }
 
 function isMe (host) {