X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fhelpers%2Frequests.js;h=b0cda09fe02452a520072f230288148ae5af3bbe;hb=a6fd2b30bf717eec14972a2175354781f5f43e77;hp=17b1127c00f2dccb0fd5624c47227b5ec5478f1a;hpb=f0f5567b6918fc60c8cab15e13aec03a89a91dfb;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/helpers/requests.js b/server/helpers/requests.js index 17b1127c0..b0cda09fe 100644 --- a/server/helpers/requests.js +++ b/server/helpers/requests.js @@ -1,106 +1,60 @@ 'use strict' -const async = require('async') -const config = require('config') -const request = require('request') const replay = require('request-replay') +const request = require('request') const constants = require('../initializers/constants') -const logger = require('./logger') -const peertubeCrypto = require('./peertubeCrypto') - -const http = config.get('webserver.https') ? 'https' : 'http' -const host = config.get('webserver.host') -const port = config.get('webserver.port') +const peertubeCrypto = require('./peertube-crypto') const requests = { - makeMultipleRetryRequest: makeMultipleRetryRequest + makeRetryRequest, + makeSecureRequest +} + +function makeRetryRequest (params, callback) { + replay( + request(params, callback), + { + retries: constants.RETRY_REQUESTS, + factor: 3, + maxTimeout: Infinity, + errorCodes: [ 'EADDRINFO', 'ETIMEDOUT', 'ECONNRESET', 'ESOCKETTIMEDOUT', 'ENOTFOUND', 'ECONNREFUSED' ] + } + ) } -function makeMultipleRetryRequest (all_data, pods, callbackEach, callback) { - if (!callback) { - callback = callbackEach - callbackEach = null +function makeSecureRequest (params, callback) { + const requestParams = { + url: constants.REMOTE_SCHEME.HTTP + '://' + params.toPod.host + params.path } - const url = http + '://' + host + ':' + port - let signature + // Add data with POST requst ? + if (params.method === 'POST') { + requestParams.json = {} - // Add signature if it is specified in the params - if (all_data.method === 'POST' && all_data.data && all_data.sign === true) { - signature = peertubeCrypto.sign(url) - } + // Add signature if it is specified in the params + if (params.sign === true) { + const host = constants.CONFIG.WEBSERVER.HOST - // Make a request for each pod - async.each(pods, function (pod, callback_each_async) { - function callbackEachRetryRequest (err, response, body, url, pod) { - if (callbackEach !== null) { - callbackEach(err, response, body, url, pod, function () { - callback_each_async() - }) - } else { - callback_each_async() + requestParams.json.signature = { + host, + signature: peertubeCrypto.sign(host) } } - const params = { - url: pod.url + all_data.path, - method: all_data.method - } - - // Add data with POST requst ? - if (all_data.method === 'POST' && all_data.data) { - // Encrypt data ? - if (all_data.encrypt === true) { - peertubeCrypto.encrypt(pod.publicKey, JSON.stringify(all_data.data), function (err, encrypted) { - if (err) return callback(err) - - params.json = { - data: encrypted.data, - key: encrypted.key - } - - makeRetryRequest(params, url, pod, signature, callbackEachRetryRequest) - }) - } else { - params.json = { data: all_data.data } - makeRetryRequest(params, url, pod, signature, callbackEachRetryRequest) - } + // If there are data informations + if (params.data) { + requestParams.json.data = params.data + request.post(requestParams, callback) } else { - makeRetryRequest(params, url, pod, signature, callbackEachRetryRequest) + // No data + request.post(requestParams, callback) } - }, callback) + } else { + request.get(requestParams, callback) + } } // --------------------------------------------------------------------------- module.exports = requests - -// --------------------------------------------------------------------------- - -function makeRetryRequest (params, from_url, to_pod, signature, callbackEach) { - // Append the signature - if (signature) { - params.json.signature = { - url: from_url, - signature: signature - } - } - - logger.debug('Make retry requests to %s.', to_pod.url) - - replay( - request.post(params, function (err, response, body) { - callbackEach(err, response, body, params.url, to_pod) - }), - { - retries: constants.REQUEST_RETRIES, - factor: 3, - maxTimeout: Infinity, - errorCodes: [ 'EADDRINFO', 'ETIMEDOUT', 'ECONNRESET', 'ESOCKETTIMEDOUT', 'ENOTFOUND', 'ECONNREFUSED' ] - } - ).on('replay', function (replay) { - logger.info('Replaying request to %s. Request failed: %d %s. Replay number: #%d. Will retry in: %d ms.', - params.url, replay.error.code, replay.error.message, replay.number, replay.delay) - }) -}