-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwith-async.js
More file actions
65 lines (59 loc) · 2.13 KB
/
with-async.js
File metadata and controls
65 lines (59 loc) · 2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
var http = require('http');
var url = require('url');
var request = require('request');
var async = require('async');
var cheerio = require('cheerio');
http.createServer(function(req, res) {
var pathName = url.parse(req.url,true).pathname;
var query = url.parse(req.url,true).query;
var template = `
<html>
<head></head>
<body>
<h1> Following are the titles of given websites: </h1>
<ul>
{list}
</ul>
</body>
</html> `;
if(pathName === '/I/want/title/'){
var q2=[]
res.writeHead(200, { 'Content-Type': 'text/html' });
if(typeof query.address !== 'string') {
query.address.forEach(function(element) {
element = /^https?:\/\//.test(element) ? element : 'http://' + element;
q2.push(element);
}, this);
} else{
var formated = /^https?:\/\//.test(query.address) ? query.address : 'http://' + query.address;
q2.push(formated);
}
list='';
async.map(q2,
function(item, callback){
request(item, function(error, response, html){
if(!error){
var html = cheerio.load(html);
callback(null, html('title').text());
} else{
callback(null, null)
}
})
},
function(err, data){
var list='';
if(data.length>1){
for (var index = 0; index < data.length; index++) {
var element = data[index];
list+= (element) ? `<li>${query.address[index]} - "${element}"</li>` : `<li>${query.address[index]} - "NO RESPONSE"</li>`;
}
}else{
list+= (data[0]) ? `<li>${query.address} - "${data[0]}"</li>` : `<li>${query.address} - "NO RESPONSE"</li>`;
}
res.end(template.replace("{list}", list))
});
} else{
res.writeHead(404);
res.end();
}
}).listen(1337, '127.0.0.1');