Skip to content

Commit 0c7f27d

Browse files
merge issue5
2 parents 838be04 + ca5adf0 commit 0c7f27d

File tree

2 files changed

+60
-35
lines changed

2 files changed

+60
-35
lines changed

src/index.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,21 @@ module.exports.main = () => {
2121
else if(args.bad || args.good || args.unk) {
2222
let filterResult = args.bad ? 400 : 200;
2323
filterResult = args.unk ? 9999 : filterResult;
24-
24+
let displayJson = false;
25+
if(args.j || args.json) displayJson = true;
2526
for(const file of filesToRead){
2627
initializeStream(file)
27-
.then(data => testUrl(data, filterResult))
28+
.then(data => testUrl(data, filterResult, displayJson))
2829
.catch(() => console.log("Error: Please provide a path to a file."));
2930
}
3031
}
31-
else if(Object.keys(args).length === 0) {
32+
else if(Object.keys(args).length === 0 || args.j || args.json ) {
33+
let displayJson = false;
34+
if(args.j || args.json) displayJson = true;
3235
for(const file of filesToRead){
3336
initializeStream(file)
34-
.then(data => testUrl(data))
35-
.catch(() => {
36-
console.log("Error: Please provide a path to a file.")
37-
});
38-
}
37+
.then(data => testUrl(data,null,displayJson))
38+
.catch(() => console.log("Error: Please provide a path to a file."));
39+
}
3940
}
4041
};

src/url_functions/url-funcs.js

Lines changed: 51 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,64 @@
11
const fetch = require("node-fetch");
22
const { printLog } = require("../console_messages/console-msg");
33

4-
const testUrl = async (urlArray, filterResult = null) => {
5-
const protocolRegex = /^www(.+)/gi;
6-
if(filterResult != 200) process.exitCode = 1;
7-
for (let url of urlArray) {
4+
const testUrl = (urlArray, filterResult = null, output = false) => {
5+
const fetchUrl = async(url) => {
6+
const protocolRegex = /^www(.+)/gi;
7+
88
if (protocolRegex.test(url)) {
99
url = "https://" + url;
1010
}
1111

12-
fetch(url, { method: "head", timeout: 1500 })
13-
.then((urlTest) => {
14-
if(filterResult === null){
15-
if (urlTest.status == 200) printLog(`URL: ${url} Status: 200`, 200);
16-
else if (urlTest.status == 400 || urlTest.status == 404){
17-
printLog(`URL: ${url} Status: 400`, 400);
18-
process.exitCode = 1;
19-
}
20-
else {
21-
process.exitCode = 1;
22-
printLog(`URL: ${url} Status: Unknown`, 9999);
23-
}
12+
try {
13+
const urlResult = await fetch(url, { method: "head", timeout: 1500 });
14+
return {url: url, status: urlResult.status};
15+
}
16+
catch (error) {
17+
return {url: url, status: 400};
18+
}
19+
};
20+
21+
const urlPromises = urlArray.map(fetchUrl);
22+
Promise.all(urlPromises)
23+
.then(finalResults => finalResults.map(urlTest => {
24+
if(filterResult === null){
25+
if (urlTest.status == 200){
26+
printLog(`URL: ${urlTest.url} Status: 200`, 200);
27+
return urlTest;
28+
}
29+
else if (urlTest.status == 400 || urlTest.status == 404) {
30+
printLog(`URL: ${urlTest.url} Status: 400`, 400);
31+
return urlTest;
2432
}
25-
else {
26-
if((urlTest.status == filterResult) || (filterResult == 400 && urlTest.status == 404)) printLog(`URL: ${url} Status: ${filterResult}`, filterResult);
27-
else if((filterResult == 9999) && urlTest.status != 200 && urlTest.status && 400 && urlTest.status != 404 ) printLog(`URL: ${url} Status: Unknown`, 9999);
33+
else {
34+
printLog(`URL: ${urlTest.url} Status: Unknown`, 9999);
35+
return urlTest;
2836
}
29-
})
30-
.catch((error) => {
31-
if(!filterResult){
32-
printLog(`URL: ${url} Status: 400`, 400);
37+
}
38+
else {
39+
if((urlTest.status == filterResult) || (filterResult == 400 && urlTest.status == 404)) {
40+
printLog(`URL: ${urlTest.url} Status: ${filterResult}`, filterResult);
41+
return urlTest;
3342
}
34-
});
35-
}
43+
else if((filterResult == 9999) && urlTest.status != 200 && urlTest.status != 400 && urlTest.status != 404 ){
44+
printLog(`URL: ${urlTest.url} Status: Unknown`, 9999);
45+
return urlTest;
46+
}
47+
}
48+
}))
49+
.then((results) => {
50+
if(output) {
51+
console.log("FINAL RESULT JSON:");
52+
console.log(JSON.stringify(results.filter(urlObj => urlObj != null)));
53+
}
54+
})
55+
.catch((urlObj) => {
56+
console.log(urlObj);
57+
if(!filterResult)printLog(`URL: ${urlObj.url} Status: 400`, 400);
58+
});
3659
};
60+
3761

3862
module.exports = {
39-
testUrl,
40-
};
63+
testUrl
64+
};

0 commit comments

Comments
 (0)