This commit is contained in:
82
node_modules/@algolia/requester-node-http/dist/requester.http.js
generated
vendored
Normal file
82
node_modules/@algolia/requester-node-http/dist/requester.http.js
generated
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
// src/createHttpRequester.ts
|
||||
import http from "http";
|
||||
import https from "https";
|
||||
import { URL } from "url";
|
||||
var agentOptions = { keepAlive: true };
|
||||
var defaultHttpAgent = new http.Agent(agentOptions);
|
||||
var defaultHttpsAgent = new https.Agent(agentOptions);
|
||||
function createHttpRequester({
|
||||
agent: userGlobalAgent,
|
||||
httpAgent: userHttpAgent,
|
||||
httpsAgent: userHttpsAgent,
|
||||
requesterOptions = {}
|
||||
} = {}) {
|
||||
const httpAgent = userHttpAgent || userGlobalAgent || defaultHttpAgent;
|
||||
const httpsAgent = userHttpsAgent || userGlobalAgent || defaultHttpsAgent;
|
||||
function send(request) {
|
||||
return new Promise((resolve) => {
|
||||
let responseTimeout;
|
||||
let connectTimeout;
|
||||
const url = new URL(request.url);
|
||||
const path = url.search === null ? url.pathname : `${url.pathname}${url.search}`;
|
||||
const options = {
|
||||
agent: url.protocol === "https:" ? httpsAgent : httpAgent,
|
||||
hostname: url.hostname,
|
||||
path,
|
||||
method: request.method,
|
||||
...requesterOptions,
|
||||
headers: {
|
||||
...request.headers,
|
||||
...requesterOptions.headers
|
||||
}
|
||||
};
|
||||
if (url.port && !requesterOptions.port) {
|
||||
options.port = url.port;
|
||||
}
|
||||
const req = (url.protocol === "https:" ? https : http).request(options, (response) => {
|
||||
let contentBuffers = [];
|
||||
response.on("data", (chunk) => {
|
||||
contentBuffers = contentBuffers.concat(chunk);
|
||||
});
|
||||
response.on("end", () => {
|
||||
clearTimeout(connectTimeout);
|
||||
clearTimeout(responseTimeout);
|
||||
resolve({
|
||||
status: response.statusCode || 0,
|
||||
content: Buffer.concat(contentBuffers).toString(),
|
||||
isTimedOut: false
|
||||
});
|
||||
});
|
||||
});
|
||||
const createTimeout = (timeout, content) => {
|
||||
return setTimeout(() => {
|
||||
req.destroy();
|
||||
resolve({
|
||||
status: 0,
|
||||
content,
|
||||
isTimedOut: true
|
||||
});
|
||||
}, timeout);
|
||||
};
|
||||
connectTimeout = createTimeout(request.connectTimeout, "Connection timeout");
|
||||
req.on("error", (error) => {
|
||||
clearTimeout(connectTimeout);
|
||||
clearTimeout(responseTimeout);
|
||||
resolve({ status: 0, content: error.message, isTimedOut: false });
|
||||
});
|
||||
req.once("response", () => {
|
||||
clearTimeout(connectTimeout);
|
||||
responseTimeout = createTimeout(request.responseTimeout, "Socket timeout");
|
||||
});
|
||||
if (request.data !== void 0) {
|
||||
req.write(request.data);
|
||||
}
|
||||
req.end();
|
||||
});
|
||||
}
|
||||
return { send };
|
||||
}
|
||||
export {
|
||||
createHttpRequester
|
||||
};
|
||||
//# sourceMappingURL=requester.http.js.map
|
Reference in New Issue
Block a user