Skip to content
This repository was archived by the owner on Feb 2, 2024. It is now read-only.

Overwriting requests agent and other properties with opts.request object #50

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 23 additions & 10 deletions lib/request.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ function buildRequest (opts) {
const isUndici = !!opts.undici
const requests = {
'http:': opts.requests && opts.requests.http ? opts.requests.http : http,
'https:': opts.requests && opts.requests.https ? opts.requests.https : https
'https:':
opts.requests && opts.requests.https ? opts.requests.https : https
}
const baseUrl = opts.base
const rejectUnauthorized = opts.rejectUnauthorized
Expand All @@ -26,7 +27,7 @@ function buildRequest (opts) {
if (semver.lt(process.version, '9.0.0')) {
throw new Error('Http2 support requires Node version >= 9.0.0')
}
if (!opts.base) throw new Error('Option base is required when http2 is true')
if (!opts.base) { throw new Error('Option base is required when http2 is true') }
} else {
agents = {
'http:': new http.Agent(agentOption(opts)),
Expand Down Expand Up @@ -71,25 +72,37 @@ function buildRequest (opts) {
if (err) {
done(err)
} else {
setImmediate(() => done(null, { statusCode: res.statusCode, headers: res.headers, stream: res.body }))
setImmediate(() =>
done(null, {
statusCode: res.statusCode,
headers: res.headers,
stream: res.body
})
)
}
})
}

function handleHttp1Req (opts, done) {
const req = requests[opts.url.protocol].request({
...opts.request,
method: opts.method,
port: opts.url.port,
path: opts.url.pathname + opts.qs,
hostname: opts.url.hostname,
headers: opts.headers,
agent: agents[opts.url.protocol]
agent: agents[opts.url.protocol],
...opts.request
})
req.on('error', done)
req.on('timeout', () => req.abort())
req.on('response', res => {
setImmediate(() => done(null, { statusCode: res.statusCode, headers: res.headers, stream: res }))
req.on('response', (res) => {
setImmediate(() =>
done(null, {
statusCode: res.statusCode,
headers: res.headers,
stream: res
})
)
})
end(req, opts.body, done)
}
Expand Down Expand Up @@ -121,7 +134,7 @@ function buildRequest (opts) {
if (!isGet) {
end(req, opts.body, done)
}
eos(req, err => {
eos(req, (err) => {
if (err) done(err)
})
req.on('timeout', () => {
Expand All @@ -130,7 +143,7 @@ function buildRequest (opts) {

req.destroy(err)
})
req.on('response', headers => {
req.on('response', (headers) => {
setImmediate(() => {
const statusCode = headers[':status']
done(null, { statusCode, headers, stream: req })
Expand All @@ -155,7 +168,7 @@ function end (req, body, cb) {
if (!body || typeof body === 'string') {
req.end(body)
} else {
pump(body, req, err => {
pump(body, req, (err) => {
if (err) cb(err)
})
}
Expand Down