expand-short-url
Version:
This library is designed to expand short URLs for Node.JS
39 lines • 1.59 kB
JavaScript
import { request as httpRequest } from 'http';
import { request as httpsRequest } from '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') ? httpsRequest : httpRequest;
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();
});
};
export const expand = (url, options) => {
const finalOptions = Object.assign(Object.assign({}, defaultOptions), options);
return fireRequest(url, finalOptions);
};
//# sourceMappingURL=index.js.map