status-check
Version:
This package take a list of website link as csv and create an array with the status code and description after hitting every links
147 lines (142 loc) • 4.13 kB
JavaScript
module.exports = {
testLinkStatus : function(fileName, callBack, showProgressInConsole) {
if(typeof showProgressInConsole == "undefined") {
showProgressInConsole = false;
}
var presentObject = this;
var csv = require('csv-array');
csv.parseCSV(fileName, function(data) {
presentObject.startCheckingLink(data, callBack, showProgressInConsole);
}, false);
},
startCheckingLink : function(linksArray, callBack, showProgressInConsole) {
var presentObject = this;
presentObject.checkSingleLink(linksArray,0, callBack,[], showProgressInConsole);
},
checkSingleLink : function(linksArray, index, callBack, outputArray, showProgressInConsole) {
var presentObject = this,
http = require('http'),
https = require('https'),
method = https,
alterFlag = 0,
originalLink="";
if(linksArray[index].indexOf('https://')===-1 && linksArray[index].indexOf('http://')===-1) {
originalLink = linksArray[index];
linksArray[index] = "http://" + linksArray[index];
alterFlag = 1;
}
if(linksArray[index].indexOf('https')==-1) {
method = http;
}
method.get(linksArray[index], function(response) {
var outputObject = {};
if(!alterFlag) {
outputObject["url"] = linksArray[index];
} else {
outputObject["url"] = originalLink;
}
outputObject["statusCode"] = ((typeof response != "undefined")?response.statusCode:"XXX");
outputObject["description"] = ((typeof response != "undefined")?presentObject.getStatusDescription(response.statusCode):"Invalid URL");
if(alterFlag) {
outputObject["alteredLink"] = linksArray[index];
}
if(parseInt(outputObject["statusCode"]/100) == 3 && typeof response.headers.location != "undefined") {
outputObject["redirectedTo"] = response.headers.location;
}
outputArray.push(outputObject);
if(showProgressInConsole) {
console.log(" Checked:: "+outputObject["url"]+" Status:: "+outputObject["statusCode"]+" Description:: "+ outputObject["description"]+((typeof outputObject["redirectedTo"])!="undefined"?" Redirected to:: "+outputObject["redirectedTo"]:""));
}
index+=1;
if(index>=linksArray.length) {
callBack(outputArray);
} else {
presentObject.checkSingleLink(linksArray, index, callBack, outputArray, showProgressInConsole);
}
})
},
getStatusDescription : function(statusCode) {
switch(statusCode) {
case 100 :
return "Continue";
case 101 :
return "Switching Protocols";
case 200 :
return "Success";
case 201 :
return "Created";
case 202 :
return "Accepted";
case 203 :
return "Non-Authoritative Information";
case 204 :
return "No Content";
case 205 :
return "Reset Content";
case 206 :
return "Partial Content";
case 300 :
return "Multiple Choices";
case 301 :
return "Moved Permanently";
case 302 :
return "Found";
case 303 :
return "See Other";
case 304 :
return "Not Modified";
case 305 :
return "Use Proxy";
case 306 :
return "Unused";
case 307 :
return "Temporary Redirect";
case 400 :
return "Bad Request";
case 401 :
return "Unauthorized";
case 402 :
return "Payment Required";
case 403 :
return "Forbidden";
case 404 :
return "Not Found";
case 405 :
return "Method Not Allowed";
case 406 :
return "Not Acceptable";
case 407 :
return "Proxy Authentication Required";
case 408 :
return "Request Timeout";
case 409 :
return "Conflict";
case 410 :
return "Gone";
case 411 :
return "Length Required";
case 412 :
return "Precondition Failed";
case 414 :
return "Request-URI Too Long";
case 415 :
return "Unsupported Media Type";
case 416 :
return "Requested Range Not Satisfiable";
case 417 :
return "Expectation Failed";
case 500 :
return "Internal Server Error";
case 501 :
return "Not Implemented";
case 502 :
return "Bad Gateway";
case 503 :
return "Service Unavailable";
case 504 :
return "Gateway Timeout";
case 505 :
return "HTTP Version Not Supported";
}
}
};