globalping-ts
Version:
Typescript library for the Globalping API
45 lines (44 loc) • 1.48 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.request = request;
exports.sleep = sleep;
exports.parseETag = parseETag;
const axios_1 = __importDefault(require("axios"));
async function request(method, url, headers, data = false, debug = false, retry = true) {
if (debug) {
console.log(`utils :: request() :: ${method} ${url}, ${retry}`);
}
let requestOptions = {
method,
url,
headers,
validateStatus: () => true,
...(data && { data }),
maxRedirects: 0,
};
if (debug) {
console.log(`utils :: request() :: requestOptions${JSON.stringify(requestOptions, null, 4)}`);
}
return await axios_1.default.request(requestOptions).catch(async (error) => {
if (debug) {
console.log(`utils :: request() :: ${method} ${url}, ${retry} - ${error.message}`);
}
if (retry) {
await sleep(1);
return await request(method, url, headers, data, debug, false);
}
throw new Error(error);
});
}
async function sleep(seconds) {
return new Promise((resolve) => setTimeout(resolve, seconds * 1000));
}
function parseETag(etag) {
if (!etag)
return '';
// Remove quotes if present
return etag.replace(/^W\//, '').replace(/^"(.*)"$/, '$1');
}