forked from jamesshore/lets_code_javascript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
40 lines (33 loc) · 1.05 KB
/
server.js
File metadata and controls
40 lines (33 loc) · 1.05 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
// Copyright (c) 2012 Titanium I.T. LLC. All rights reserved. See LICENSE.txt for details.
(function() {
"use strict";
var http = require("http");
var fs = require("fs");
var send = require("send");
var server;
exports.start = function(contentDir, notFoundPageToServe, portNumber, callback) {
if (!portNumber) throw "port number is required";
server = http.createServer();
server.on("request", function(request, response) {
send(request, request.url, { root: contentDir }).
on("error", handleError).
pipe(response);
function handleError(err) {
if (err.status === 404) serveErrorFile(response, 404, contentDir + "/" + notFoundPageToServe);
else throw err;
}
});
server.listen(portNumber, callback);
};
exports.stop = function(callback) {
server.close(callback);
};
function serveErrorFile(response, statusCode, file) {
response.statusCode = statusCode;
response.setHeader("Content-Type", "text/html; charset=UTF-8");
fs.readFile(file, function(err, data) {
if (err) throw err;
response.end(data);
});
}
}());