X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2Fpods.js;h=a0dbb6b68c2efeff289b3f0f9aed2a7959005114;hb=1cb4884db56c774e89db80bd0e79a9765441548d;hp=b4325ebcfd8cd75632c3cbd270b5b1bc3d2d55e2;hpb=a18603803ae37d7db8ac116113ede0bd979eddcd;p=github%2FChocobozzz%2FPeerTube.git diff --git a/src/pods.js b/src/pods.js index b4325ebcf..a0dbb6b68 100644 --- a/src/pods.js +++ b/src/pods.js @@ -8,6 +8,7 @@ var logger = require('./logger') var PodsDB = require('./database').PodsDB + var poolRequests = require('./poolRequests') var utils = require('./utils') var pods = {} @@ -46,7 +47,8 @@ var params = { url: data.url, - publicKey: data.publicKey + publicKey: data.publicKey, + score: global.FRIEND_BASE_SCORE } PodsDB.create(params, function (err, pod) { @@ -66,46 +68,16 @@ }) } - // { path, data } - pods.makeSecureRequest = function (data, callback) { - PodsDB.find({}, { url: 1, publicKey: 1 }).exec(function (err, urls) { - if (err) { - logger.error('Cannot get the list of the pods.', { error: err }) - return callback(err) - } - - logger.debug('Make multiple requests.') - - var params = { - encrypt: true, - sign: true, - method: data.method, - path: data.path, - data: data.data - } - - utils.makeMultipleRetryRequest( - params, - - urls, - - function callbackEachPodFinished (err, response, body, url) { - if (err || response.statusCode !== 200) { - logger.error('Error sending secure request to %s/%s pod.', url, data.path, { error: err }) - } - }, - - function callbackAllPodsFinished (err) { - if (err) { - logger.error('There was some errors when sending the video meta data.', { error: err }) - return callback(err) - } + pods.addVideoToFriends = function (video) { + // To avoid duplicates + var id = video.name + video.magnetUri + poolRequests.addToPoolRequests(id, 'add', video) + } - logger.debug('Finished') - callback(null) - } - ) - }) + pods.removeVideoToFriends = function (video) { + // To avoid duplicates + var id = video.name + video.magnetUri + poolRequests.addToPoolRequests(id, 'remove', video) } pods.makeFriends = function (callback) { @@ -125,7 +97,6 @@ var pods_list = computeWinningPods(urls, pods_score) logger.debug('Pods that we keep computed.', { pods_to_keep: pods_list }) - logger.debug('Make requests...') makeRequestsToWinningPods(cert, pods_list) }) }) @@ -133,8 +104,8 @@ // ----------------------------------------------------------------------- function computeForeignPodsList (url, callback) { - // Always add a trust pod - pods_score[url] = Infinity + // Let's give 1 point to the pod we ask the friends list + pods_score[url] = 1 getForeignPodsList(url, function (foreign_pods_list) { if (foreign_pods_list.length === 0) return callback() @@ -175,16 +146,19 @@ pods_list, - function eachRequest (err, response, body, url) { + function eachRequest (err, response, body, url, pod, callback_each_request) { // We add the pod if it responded correctly with its public certificate if (!err && response.statusCode === 200) { - pods.add({ url: url, publicKey: body.cert }, function (err) { + pods.add({ url: pod.url, publicKey: body.cert, score: global.FRIEND_BASE_SCORE }, function (err) { if (err) { - logger.error('Error with adding %s pod.', url, { error: err }) + logger.error('Error with adding %s pod.', pod.url, { error: err }) } + + return callback_each_request() }) } else { - logger.error('Error with adding %s pod.', url, { error: err || new Error('Status not 200') }) + logger.error('Error with adding %s pod.', pod.url, { error: err || new Error('Status not 200') }) + return callback_each_request() } },