]>
Commit | Line | Data |
---|---|---|
1 | 'use strict' | |
2 | ||
3 | const replay = require('request-replay') | |
4 | const request = require('request') | |
5 | ||
6 | const constants = require('../initializers/constants') | |
7 | const peertubeCrypto = require('./peertube-crypto') | |
8 | ||
9 | const requests = { | |
10 | makeRetryRequest, | |
11 | makeSecureRequest | |
12 | } | |
13 | ||
14 | function makeRetryRequest (params, callback) { | |
15 | replay( | |
16 | request(params, callback), | |
17 | { | |
18 | retries: constants.RETRY_REQUESTS, | |
19 | factor: 3, | |
20 | maxTimeout: Infinity, | |
21 | errorCodes: [ 'EADDRINFO', 'ETIMEDOUT', 'ECONNRESET', 'ESOCKETTIMEDOUT', 'ENOTFOUND', 'ECONNREFUSED' ] | |
22 | } | |
23 | ) | |
24 | } | |
25 | ||
26 | function makeSecureRequest (params, callback) { | |
27 | const requestParams = { | |
28 | url: params.toPod.url + params.path | |
29 | } | |
30 | ||
31 | // Add data with POST requst ? | |
32 | if (params.method === 'POST') { | |
33 | requestParams.json = {} | |
34 | ||
35 | // Add signature if it is specified in the params | |
36 | if (params.sign === true) { | |
37 | requestParams.json.signature = { | |
38 | url: constants.CONFIG.WEBSERVER.URL, | |
39 | signature: peertubeCrypto.sign(constants.CONFIG.WEBSERVER.URL) | |
40 | } | |
41 | } | |
42 | ||
43 | // If there are data informations | |
44 | if (params.data) { | |
45 | // Encrypt data | |
46 | if (params.encrypt === true) { | |
47 | peertubeCrypto.encrypt(params.toPod.publicKey, JSON.stringify(params.data), function (err, encrypted) { | |
48 | if (err) return callback(err) | |
49 | ||
50 | requestParams.json.data = encrypted.data | |
51 | requestParams.json.key = encrypted.key | |
52 | ||
53 | request.post(requestParams, callback) | |
54 | }) | |
55 | } else { | |
56 | // No encryption | |
57 | requestParams.json.data = params.data | |
58 | request.post(requestParams, callback) | |
59 | } | |
60 | } else { | |
61 | // No data | |
62 | request.post(requestParams, callback) | |
63 | } | |
64 | } else { | |
65 | request.get(requestParams, callback) | |
66 | } | |
67 | } | |
68 | ||
69 | // --------------------------------------------------------------------------- | |
70 | ||
71 | module.exports = requests |