This repository was archived by the owner on Jun 14, 2024. It is now read-only.
Repository navigation
Expand file tree
/
Copy pathserver.js
More file actions
76 lines (71 loc) · 2.44 KB
/
Copy pathserver.js
File metadata and controls
76 lines (71 loc) · 2.44 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
66
67
68
69
70
71
72
73
74
75
76
'use strict';
var http = require('http');
var jsdom = require('jsdom');
var { JSDOM } = jsdom;
var fs = require('fs');
var port = process.env.PORT || 8092;
var dbOperations = require('./databaseOperations.js');
var utils = require('./utils.js');
var appInsights = require('applicationinsights');
if(process.env.NODE_ENV == "production"){
appInsights.setup();
appInsights.start();
}
var server = http.createServer(function (req, res) {
var reqUrl = req.url.replace(/^\/+|\/+$/g, '');
if(!reqUrl || (!!reqUrl && (reqUrl == "" || reqUrl.toLowerCase() == "index.html"))){
var data = fs.readFileSync('index.html');
dbOperations.addRecord("index", function(){
dbOperations.queryCount(function (visitCount){
var dom = new JSDOM(`${data}`);
var visitCountElement = dom.window.document.getElementById("visitCount");
if(!!visitCountElement){
visitCountElement.innerHTML = "Total visits: " + visitCount;
data = dom.serialize();
}
utils.writeResponse(res, data);
}, function(error){
utils.writeResponse(res, data);
});
}, function(error){
utils.writeResponse(res, data);
});
}
else if(reqUrl.toLowerCase() == "users"){
utils.writeResponse(res, "respond with a resource");
}
else if (reqUrl.toLowerCase() == "favicon.ico"){
data = fs.readFileSync("img/successCloudNew.svg");
res.writeHead(200, { 'Content-Type': 'image/svg+xml', 'Content-Length': data.length });
res.write(data);
res.end();
}
else if (fs.existsSync(reqUrl)) {
var contentType = "text/plain";
data = fs.readFileSync(reqUrl);
switch(reqUrl.split('.').pop()){
case "css":
contentType = "text/css";
break;
case "ttf":
contentType = "font/ttf";
break;
case "svg":
contentType = "image/svg+xml";
break;
}
res.writeHead(200, { 'Content-Type': contentType, 'Content-Length': data.length });
res.write(data);
res.end();
}
else {
utils.writeResponse(res, "not found");
}
});
exports.listen = function () {
server.listen.apply(server, arguments);
};
exports.close = function (callback) {
server.close(callback);
};
server.listen(port);