Skip to content

Commit 01cbaad

Browse files
authored
Merge pull request #22 from FreeOps-Tools/dev
feat: code restructure
2 parents e93eea2 + 7430427 commit 01cbaad

3 files changed

Lines changed: 46 additions & 13 deletions

File tree

modules/analyze.js

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
const http = require('http');
2-
const https = require('https');
3-
const dns = require('dns');
1+
// analyze.js
2+
43
const url = require('url');
54
const now = require('performance-now');
65
const { isURL } = require('validator');
6+
const makeHttpRequest = require('./httpRequest');
7+
const performDnsLookup = require('./dnsLookup');
78

89
function analyzeURL(req, res) {
910
try {
@@ -18,23 +19,27 @@ function analyzeURL(req, res) {
1819
}
1920

2021
const hostname = url.parse(urlToAnalyze).hostname;
21-
const protocol = url.parse(urlToAnalyze).protocol === 'https:' ? https : http;
2222
const options = {
2323
method: 'HEAD',
2424
timeout: 5000,
2525
};
2626

2727
const start = now();
2828

29-
protocol.request(urlToAnalyze, options, (httpResponse) => {
30-
const isUp = httpResponse.statusCode >= 200 && httpResponse.statusCode < 400;
29+
makeHttpRequest(urlToAnalyze, options, (response, httpRequestError) => {
30+
if (httpRequestError) {
31+
console.error(`Failed to request ${urlToAnalyze}: ${httpRequestError}`);
32+
return res.json({ isUp: false, ipAddress: null, uptime: 0, responseTime: 0 });
33+
}
34+
35+
const isUp = response.statusCode >= 200 && response.statusCode < 400;
3136
if (!isUp) {
3237
return res.json({ isUp: false, ipAddress: null, uptime: 0, responseTime: 0 });
3338
}
3439

35-
dns.lookup(hostname, (dnsError, ipAddress) => {
36-
if (dnsError) {
37-
console.error(`Failed to lookup IP address for ${urlToAnalyze}: ${dnsError}`);
40+
performDnsLookup(hostname, (ipAddress, dnsLookupError) => {
41+
if (dnsLookupError) {
42+
console.error(`Failed to lookup IP address for ${urlToAnalyze}: ${dnsLookupError}`);
3843
return res.status(500).json({ error: 'Internal server error' });
3944
}
4045

@@ -50,10 +55,7 @@ function analyzeURL(req, res) {
5055
console.log(`isUp: ${isUp}, ipAddress: ${ipAddress}, uptime: ${uptime}%, responseTime: ${responseTime}s`);
5156
return res.json({ isUp: true, ipAddress, uptime, responseTime });
5257
});
53-
}).on('error', (error) => {
54-
console.error(`Failed to request ${urlToAnalyze}: ${error}`);
55-
return res.json({ isUp: false, ipAddress: null, uptime: 0, responseTime: 0 });
56-
}).end();
58+
});
5759
} catch (error) {
5860
console.error(`Error analyzing URL: ${error.message}`);
5961
return res.status(400).json({ error: error.message });

modules/dnsLookup.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
const dns = require('dns');
2+
3+
function performDnsLookup(hostname, callback) {
4+
dns.lookup(hostname, (error, ipAddress) => {
5+
if (error) {
6+
callback(null, error);
7+
} else {
8+
callback(ipAddress);
9+
}
10+
});
11+
}
12+
13+
module.exports = performDnsLookup;

modules/httpRequest.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
const http = require('http');
2+
const https = require('https');
3+
4+
function makeHttpRequest(urlToAnalyze, options, callback) {
5+
const protocol = urlToAnalyze.startsWith('https://') ? https : http;
6+
7+
const request = protocol.request(urlToAnalyze, options, (response) => {
8+
callback(response);
9+
});
10+
11+
request.on('error', (error) => {
12+
callback(null, error);
13+
});
14+
15+
request.end();
16+
}
17+
18+
module.exports = makeHttpRequest;

0 commit comments

Comments
 (0)