You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.6 KiB
80 lines
1.6 KiB
var http = require('http'),
|
|
fs = require('fs'),
|
|
path = require('path'),
|
|
director = require('../../../lib/director'),
|
|
index;
|
|
|
|
fs.readFile(path.join(__dirname, '..', 'html5-routes-harness.html'), function (err, data) {
|
|
if (err) {
|
|
throw err;
|
|
}
|
|
|
|
index = data;
|
|
});
|
|
|
|
var CONTENT_TYPES = {
|
|
'.js' : 'text/javascript',
|
|
'.css' : 'text/css'
|
|
};
|
|
|
|
var dirname = path.dirname(module.uri);
|
|
|
|
// Dummy file server
|
|
function fileServer(folder, file) {
|
|
var root = path.resolve(__dirname, '..');
|
|
|
|
if (folder === 'build' || folder === 'node_modules') {
|
|
root = path.resolve(root, '..', '..');
|
|
}
|
|
|
|
if (file === undefined) {
|
|
file = folder;
|
|
folder = '.';
|
|
}
|
|
|
|
var filepath = path.resolve(root, folder, file);
|
|
|
|
var res = this.res;
|
|
|
|
(fs.exists || path.exists)(filepath, function (exists) {
|
|
if (exists) {
|
|
fs.readFile(filepath, function (err, data) {
|
|
if (err) {
|
|
res.writeHead(404);
|
|
res.end();
|
|
}
|
|
|
|
res.writeHead(200, {'Content-Type': CONTENT_TYPES[path.extname(filepath)]});
|
|
res.end(data);
|
|
});
|
|
} else {
|
|
res.writeHead(404);
|
|
res.end();
|
|
}
|
|
});
|
|
}
|
|
|
|
var router = new director.http.Router({
|
|
'/files': {
|
|
'/:folder': {
|
|
'/(.+)': {
|
|
get: fileServer
|
|
},
|
|
|
|
get: fileServer
|
|
}
|
|
}
|
|
});
|
|
|
|
var server = http.createServer(function (req, res) {
|
|
router.dispatch(req, res, function (err) {
|
|
if (err && req.url !== '/favicon.ico') {
|
|
// By default just reply with the index page
|
|
this.res.writeHead(200, {'Content-Type': 'text/html'});
|
|
this.res.end(index);
|
|
}
|
|
});
|
|
});
|
|
|
|
server.listen(8080);
|