10
10
// License for the specific language governing permissions and limitations under
11
11
// the License.
12
12
13
+ const { HttpsCookieAgent, HttpCookieAgent } = require ( 'http-cookie-agent' )
13
14
const { URL } = require ( 'url' )
14
15
const assert = require ( 'assert' )
15
16
const querystring = require ( 'qs' )
16
- const axios = require ( 'axios' ) . default
17
- const axiosCookieJarSupport = require ( 'axios-cookiejar-support' ) . default
18
- const tough = require ( 'tough-cookie' )
19
- axiosCookieJarSupport ( axios )
20
- const cookieJar = new tough . CookieJar ( )
17
+ const axios = require ( 'axios' )
18
+ const { CookieJar } = require ( 'tough-cookie' )
19
+ const cookieJar = new CookieJar ( )
21
20
const stream = require ( 'stream' )
22
- const http = require ( 'http' )
23
- const https = require ( 'https' )
24
21
const pkg = require ( '../package.json' )
25
- const AGENT_DEFAULTS = { keepAlive : true , maxSockets : 50 , keepAliveMsecs : 30000 }
22
+ const AGENT_DEFAULTS = { jar : cookieJar , keepAlive : true , maxSockets : 50 , keepAliveMsecs : 30000 }
26
23
const SCRUBBED_STR = 'XXXXXX'
27
- const defaultHttpAgent = new http . Agent ( AGENT_DEFAULTS )
28
- const defaultHttpsAgent = new https . Agent ( AGENT_DEFAULTS )
24
+ const defaultHttpAgent = new HttpCookieAgent ( AGENT_DEFAULTS )
25
+ const defaultHttpsAgent = new HttpsCookieAgent ( AGENT_DEFAULTS )
29
26
const ChangesReader = require ( './changesreader.js' )
30
27
const MultiPartFactory = require ( './multipart.js' )
31
28
@@ -398,12 +395,18 @@ module.exports = exports = function dbScope (cfg) {
398
395
// add http agents
399
396
req . httpAgent = cfg . requestDefaults . agent || defaultHttpAgent
400
397
req . httpsAgent = cfg . requestDefaults . agent || defaultHttpsAgent
398
+ req . httpAgent . jar = req . httpAgent . jar ? req . httpAgent . jar : cookieJar
399
+ req . httpsAgent . jar = req . httpsAgent . jar ? req . httpsAgent . jar : cookieJar
400
+ const ax = axios . create ( {
401
+ httpAgent : req . httpAgent ,
402
+ httpsAgent : req . httpsAgent
403
+ } )
401
404
402
405
// actually do the HTTP request
403
406
if ( opts . stream ) {
404
407
// return the Request object for streaming
405
408
const outStream = new stream . PassThrough ( )
406
- axios ( req )
409
+ ax ( req )
407
410
. then ( ( response ) => {
408
411
response . data . pipe ( outStream )
409
412
} ) . catch ( e => {
@@ -412,14 +415,14 @@ module.exports = exports = function dbScope (cfg) {
412
415
return outStream
413
416
} else {
414
417
if ( typeof callback === 'function' ) {
415
- axios ( req ) . then ( ( response ) => {
418
+ ax ( req ) . then ( ( response ) => {
416
419
responseHandler ( response , req , opts , null , null , callback )
417
420
} ) . catch ( ( e ) => {
418
421
responseHandler ( e , req , opts , null , null , callback )
419
422
} )
420
423
} else {
421
424
return new Promise ( ( resolve , reject ) => {
422
- axios ( req ) . then ( ( response ) => {
425
+ ax ( req ) . then ( ( response ) => {
423
426
responseHandler ( response , req , opts , resolve , reject )
424
427
} ) . catch ( ( e ) => {
425
428
responseHandler ( e , req , opts , resolve , reject )
0 commit comments