aboutsummaryrefslogtreecommitdiffstats
path: root/index.js
blob: d442c2d5ac9d7fda71da3d55f50030542995496e (plain)
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
77
78
79
80
81
const http = require('http');
const path = require('path');
const fs   = require('fs');

const server = http.createServer((req, res) => {
/*	if(req.url === '/') {
		fs.readFile(path.join(__dirname, 'public', 'index.html'), (err,
					content) => {
			if(err) throw err;
			res.writeHead(200, { 'Content-Type': 'text/html' });
			res.end(content);
		});
	}

	if(req.url === '/api/users') {
		const users = [
		  {name: 'William Harrington', age: 39 },
		  {name: 'Julie Harrington', age: 32 }
		];

		res.writeHead(200, { 'Content-Type': 'application/json' });
		res.end(JSON.stringify(users));
	}*/

	// Build file path
	let filePath = path.join(__dirname,
		'public', req.url === '/' ?	'index.html' : req.url
	);

	// Extension of file
	let extname = path.extname(filePath);

	// Initial content type
	let contentType = 'text/html';

	// Check extension and set content type
	switch(extname) {
		case '.js':
			contentType = 'text/javascript';
			break;
		case '.css':
			contentType = 'text/css';
			break;
		case '.json':
			contentType = 'application/json';
			break;
		case '.png':
			contentType = 'image/png';
			break;
		case '.jpg':
			contentType = 'image/jpg';
			break;
	}


	// Read file
	fs.readFile(filePath, (err, content) => {
		if(err) {
			if(err.code == 'ENOENT') {
				// Page not found
				fs.readFile(path.join(__dirname, 'public', '404.html'),
					(err, content) => {
						res.writeHead(200, { 'Content-Type': 'text/html'});
						res.end(content, 'utf8');
					})
			} else {
				// Some server error
				res.writeHead(500);
				res.end(`Server Error: ${err.code}`);
			}
		} else {
			// Success
			res.writeHead(200, { 'Content-Type': contentType });
			res.end(content, 'utf8');
		}
	});
});

const PORT = process.env.PORT || 3000;

server.listen(PORT, () => console.log(`Server running on port ${PORT}`));