UNPKG

expand-short-url

Version:

This library is designed to expand short URLs for Node.JS

39 lines 1.59 kB
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