-
Notifications
You must be signed in to change notification settings - Fork 9
/
server.js
63 lines (54 loc) · 1.76 KB
/
server.js
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
/*
* *
* Copyright 2014 Comcast Cable Communications Management, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* /
*/
const http = require('http');
const config = require('./config');
const pages = config.urls;
const parallel = require('paralleljs');
const crawler = require('./crawler');
const app = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Sitemap generator!\n');
});
function crawlBusiness() {
try {
if (!config.autoCrawl) {
// Setting up processes
let processes = [];
pages.forEach((page) => processes.push(crawler.getXml(page, pages.length)))
// Running the process
new parallel(processes);
} else {
process.setMaxListeners(Infinity);
crawler.processes.push(config.base);
crawler.autoFetch();
}
}
catch (e) {
console.log(e);
}
}
// Enable below when cluster is disabled
startServer();
function startServer() {
const server = app.listen(process.env.PORT || 8090, err => {
if (err) return console.error(err);
const port = server.address().port;
console.info(`App listening on port ${port}`);
crawlBusiness();
});
}