expand-short-url
Version:
This library is designed to expand short URLs for Node.JS
43 lines • 1.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.expand = void 0;
const http_1 = require("http");
const https_1 = require("https");
const defaultOptions = {
timeout: 5000, // Default timeout of 5 seconds
maxRedirects: 3, // Default max redirects
};
const fireRequest = (url, options) => {
return new Promise((resolve, reject) => {
const request = url.startsWith('https') ? https_1.request : http_1.request;
const req = request(url, options, (res) => {
if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
// Handle redirects
if (options.maxRedirects > 0) {
options.maxRedirects--;
return resolve(fireRequest(res.headers.location, options));
}
else {
return reject(new Error('Max redirects exceeded'));
}
}
else if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
// Successful response
resolve(res.headers.location || url);
}
else {
// Error response
reject(new Error(`Request failed with status code ${res.statusCode}`));
}
});
req.on('error', reject);
req.setTimeout(options.timeout, () => req.destroy());
req.end();
});
};
const expand = (url, options) => {
const finalOptions = Object.assign(Object.assign({}, defaultOptions), options);
return fireRequest(url, finalOptions);
};
exports.expand = expand;
//# sourceMappingURL=index.js.map