ktvmanager/lib/makeRequest.js

57 lines
1.4 KiB
JavaScript
Raw Permalink Normal View History

2025-07-05 10:36:14 +01:00
const http = require('http');
const https = require('https');
const makeRequest = async (url) => {
return new Promise((resolve) => {
const client = url.startsWith('https://') ? https : http;
const req = client.get(url, (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
let parsed = data;
try {
if (typeof data === 'string' && data.trim().startsWith('{')) {
parsed = JSON.parse(data);
}
} catch (e) {
console.warn('Warning: JSON parse failed');
}
resolve({
statusCode: res.statusCode,
headers: res.headers,
body: parsed
});
});
});
req.on('error', (err) => {
console.error('Request failed:', err.message);
resolve({
statusCode: 500,
body: null,
error: err.message
});
});
req.setTimeout(2000, () => {
req.abort();
resolve({
statusCode: 408,
body: null,
error: 'Request timeout'
});
});
});
};
module.exports = {
makeRequest
};