All checks were successful
Build and Publish Docker Image / build-and-push (push) Successful in 55s
57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
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
|
|
};
|