dnsimple
Version:
A Node.JS client for the DNSimple API.
43 lines (42 loc) • 1.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const https = require("https");
const url_1 = require("url");
const main_1 = require("../main");
const httpsFetcher = (params) => {
return new Promise((resolve, reject) => {
const urlObj = new url_1.URL(params.url);
const options = {
method: params.method,
headers: params.headers,
timeout: params.timeout,
};
const req = https.request(urlObj, options, (res) => {
const chunks = [];
res
.on("data", (chunk) => chunks.push(chunk))
.on("end", () => {
const body = Buffer.concat(chunks).toString("utf-8");
resolve({
status: res.statusCode || 500, // Fallback to 500 if statusCode is undefined
body: body,
});
});
});
req.on("error", (err) => {
if (err.code === "ECONNRESET")
reject(new main_1.TimeoutError());
else
reject(err);
});
const timeoutId = setTimeout(() => {
req.destroy();
reject(new main_1.TimeoutError());
}, params.timeout);
req.on("close", () => clearTimeout(timeoutId));
if (params.body)
req.write(params.body);
req.end();
});
};
exports.default = httpsFetcher;