1- const http = require ( 'http' ) ;
2- const https = require ( 'https' ) ;
3- const dns = require ( 'dns' ) ;
1+ // analyze.js
2+
43const url = require ( 'url' ) ;
54const now = require ( 'performance-now' ) ;
65const { isURL } = require ( 'validator' ) ;
6+ const makeHttpRequest = require ( './httpRequest' ) ;
7+ const performDnsLookup = require ( './dnsLookup' ) ;
78
89function 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 } ) ;
0 commit comments