Skip to content

Commit d7617d6

Browse files
glynnbirdGlynn Bird
andauthored
removes axios-cookiejar-support. See issue#295 (#296)
Co-authored-by: Glynn Bird <glynnbird@apache.org>
1 parent 62e104d commit d7617d6

File tree

4 files changed

+45
-85
lines changed

4 files changed

+45
-85
lines changed

lib/nano.js

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,19 @@
1010
// License for the specific language governing permissions and limitations under
1111
// the License.
1212

13+
const { HttpsCookieAgent, HttpCookieAgent } = require('http-cookie-agent')
1314
const { URL } = require('url')
1415
const assert = require('assert')
1516
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()
2120
const stream = require('stream')
22-
const http = require('http')
23-
const https = require('https')
2421
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 }
2623
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)
2926
const ChangesReader = require('./changesreader.js')
3027
const MultiPartFactory = require('./multipart.js')
3128

@@ -398,12 +395,18 @@ module.exports = exports = function dbScope (cfg) {
398395
// add http agents
399396
req.httpAgent = cfg.requestDefaults.agent || defaultHttpAgent
400397
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+
})
401404

402405
// actually do the HTTP request
403406
if (opts.stream) {
404407
// return the Request object for streaming
405408
const outStream = new stream.PassThrough()
406-
axios(req)
409+
ax(req)
407410
.then((response) => {
408411
response.data.pipe(outStream)
409412
}).catch(e => {
@@ -412,14 +415,14 @@ module.exports = exports = function dbScope (cfg) {
412415
return outStream
413416
} else {
414417
if (typeof callback === 'function') {
415-
axios(req).then((response) => {
418+
ax(req).then((response) => {
416419
responseHandler(response, req, opts, null, null, callback)
417420
}).catch((e) => {
418421
responseHandler(e, req, opts, null, null, callback)
419422
})
420423
} else {
421424
return new Promise((resolve, reject) => {
422-
axios(req).then((response) => {
425+
ax(req).then((response) => {
423426
responseHandler(response, req, opts, resolve, reject)
424427
}).catch((e) => {
425428
responseHandler(e, req, opts, resolve, reject)

package-lock.json

Lines changed: 25 additions & 66 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717
"database"
1818
],
1919
"dependencies": {
20+
"http-cookie-agent": "^1.0.5",
2021
"@types/tough-cookie": "^4.0.0",
2122
"axios": "^0.26.1",
22-
"axios-cookiejar-support": "^1.0.1",
2323
"qs": "^6.10.3",
2424
"tough-cookie": "^4.0.0"
2525
},
@@ -48,4 +48,4 @@
4848
"jest"
4949
]
5050
}
51-
}
51+
}

test/nano.auth.test.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ test('should be able to authenticate - POST /_session - nano.auth', async () =>
2424
const username = 'u'
2525
const password = 'p'
2626
const response = { ok: true, name: 'admin', roles: ['_admin', 'admin'] }
27-
const authsession = 'AuthSession=YWRtaW46NUU0MTFBMDE6stHsxYnlDy4mYxwZEcnXHn4fm5w;'
28-
const cookie = authsession + ' Version=1; Expires=Mon, 10-Feb-2050 09:03:21 GMT; Max-Age=600; Path=/; HttpOnly'
27+
const c = 'AuthSession=YWRtaW46NUU0MTFBMDE6stHsxYnlDy4mYxwZEcnXHn4fm5w'
28+
const cookie = `${c}; Version=1; Expires=Mon, 10-Feb-2050 09:03:21 GMT; Max-Age=600; Path=/; HttpOnly`
2929
const scope = nock(COUCH_URL)
3030
.post('/_session', 'name=u&password=p', { 'content-type': 'application/x-www-form-urlencoded; charset=utf-8' })
3131
.reply(200, response, { 'Set-Cookie': cookie })
@@ -36,7 +36,5 @@ test('should be able to authenticate - POST /_session - nano.auth', async () =>
3636
const p = await nano.auth(username, password)
3737
expect(p).toStrictEqual(response)
3838
await nano.db.list()
39-
expect(nano.config.cookies.length).toBe(1)
40-
expect(nano.config.cookies[0].toString().startsWith(authsession)).toBe(true)
4139
expect(scope.isDone()).toBe(true)
4240
})

0 commit comments

Comments
 (0)