]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/helpers/requests.js
Remove livereload module (role of webpack now)
[github/Chocobozzz/PeerTube.git] / server / helpers / requests.js
CommitLineData
9f10b292 1'use strict'
dac0a531 2
f0f5567b 3const config = require('config')
f0f5567b 4const replay = require('request-replay')
528a9efa 5const request = require('request')
dac0a531 6
f0f5567b 7const constants = require('../initializers/constants')
5f698b82 8const peertubeCrypto = require('./peertube-crypto')
dac0a531 9
f0f5567b
C
10const http = config.get('webserver.https') ? 'https' : 'http'
11const host = config.get('webserver.host')
12const port = config.get('webserver.port')
dac0a531 13
f0f5567b 14const requests = {
528a9efa
C
15 makeRetryRequest: makeRetryRequest,
16 makeSecureRequest: makeSecureRequest
9f10b292 17}
dac0a531 18
528a9efa
C
19function makeRetryRequest (params, callback) {
20 replay(
21 request(params, callback),
22 {
23 retries: constants.RETRY_REQUESTS,
24 factor: 3,
25 maxTimeout: Infinity,
26 errorCodes: [ 'EADDRINFO', 'ETIMEDOUT', 'ECONNRESET', 'ESOCKETTIMEDOUT', 'ENOTFOUND', 'ECONNREFUSED' ]
27 }
28 )
29}
dac0a531 30
528a9efa
C
31function makeSecureRequest (params, callback) {
32 const myUrl = http + '://' + host + ':' + port
dac0a531 33
528a9efa
C
34 const requestParams = {
35 url: params.toPod.url + params.path
9f10b292 36 }
dac0a531 37
528a9efa
C
38 // Add data with POST requst ?
39 if (params.method === 'POST') {
40 requestParams.json = {}
dac0a531 41
528a9efa
C
42 // Add signature if it is specified in the params
43 if (params.sign === true) {
44 requestParams.json.signature = {
45 url: myUrl,
46 signature: peertubeCrypto.sign(myUrl)
47 }
9f10b292 48 }
dac0a531 49
528a9efa
C
50 // If there are data informations
51 if (params.data) {
52 // Encrypt data
53 if (params.encrypt === true) {
54 peertubeCrypto.encrypt(params.toPod.publicKey, JSON.stringify(params.data), function (err, encrypted) {
f0f5567b 55 if (err) return callback(err)
9f10b292 56
528a9efa
C
57 requestParams.json.data = encrypted.data
58 requestParams.json.key = encrypted.key
9f10b292 59
528a9efa 60 request.post(requestParams, callback)
f0f5567b 61 })
dac0a531 62 } else {
528a9efa
C
63 // No encryption
64 requestParams.json.data = params.data
65 request.post(requestParams, callback)
dac0a531 66 }
9f10b292 67 } else {
528a9efa
C
68 // No data
69 request.post(requestParams, callback)
9f10b292 70 }
528a9efa
C
71 } else {
72 request.get(requestParams, callback)
73 }
9f10b292 74}
dac0a531 75
9f10b292 76// ---------------------------------------------------------------------------
dac0a531 77
9f10b292 78module.exports = requests