module.exports = function(req, res, templates, conf) { | |||||
this.req = req; | |||||
this.res = res; | |||||
this.templates = templates; | |||||
this.conf = conf; | |||||
} | |||||
module.exports.prototype = { | |||||
end: function(str) { | |||||
this.res.end(str); | |||||
}, | |||||
template: function(name, args) { | |||||
var str = this.templates[name]; | |||||
if (!str) | |||||
throw new Error("No such template: "+name); | |||||
for (var i in args) { | |||||
str = str.split("{{"+i+"}}").join(args[i]); | |||||
} | |||||
return str; | |||||
} | |||||
} |
{ | |||||
"webroot": "web", | |||||
"port": 8081 | |||||
} |
var http = require("http"); | |||||
var fs = require("fs"); | |||||
var Api = require("./api.js"); | |||||
var conf = JSON.parse(fs.readFileSync("conf.json")); | |||||
var files = { | |||||
"/": "index.html", | |||||
"/404": "404.html", | |||||
"/viewer": "viewer.node.js" | |||||
} | |||||
//Prepare files | |||||
var errs = false; | |||||
Object.keys(files).forEach(function(i) { | |||||
try { | |||||
if (/\.node\.js$/.test(files[i])) | |||||
files[i] = require("./"+conf.webroot+"/"+files[i]); | |||||
else | |||||
files[i] = fs.readFileSync(conf.webroot+"/"+files[i], "utf8"); | |||||
} catch (err) { | |||||
console.log(err.toString()); | |||||
errs = true; | |||||
} | |||||
}); | |||||
if (errs) | |||||
process.exit(); | |||||
//Prepare all templates | |||||
var templates = {}; | |||||
fs.readdirSync("templates").forEach(function(f) { | |||||
templates[f.replace(/\.html$/, "")] = fs.readFileSync("templates/"+f, "utf8"); | |||||
}); | |||||
function onRequest(req, res) { | |||||
console.log("Request for "+req.url); | |||||
var file = files[req.url]; | |||||
if (!file) { | |||||
file = files["/404"]; | |||||
res.writeHead(404); | |||||
} | |||||
if (typeof file == "function") | |||||
file(new Api(req, res, templates, conf)); | |||||
else | |||||
res.end(file); | |||||
} | |||||
var server = http.createServer(onRequest); | |||||
server.listen(conf.port); | |||||
console.log("Listening on port "+conf.port+"."); |
{ | |||||
"name": "mimg", | |||||
"version": "0.0.0", | |||||
"description": "A simple image host.", | |||||
"main": "index.js", | |||||
"scripts": { | |||||
"test": "echo \"Error: no test specified\" && exit 1", | |||||
"start": "node index.js" | |||||
}, | |||||
"author": "Martin Dørum Nygaard", | |||||
"license": "GPLv2" | |||||
} |
<!DOCTYPE html> | |||||
<html> | |||||
<head> | |||||
<meta charset="utf-8"> | |||||
<title>{{title}}</title> | |||||
</head> | |||||
<body> | |||||
</body> | |||||
</html> |
<!DOCTYPE html> | |||||
<html> | |||||
<head> | |||||
<meta charset="utf-8"> | |||||
</head> | |||||
<body> | |||||
404, file not found. | |||||
</body> | |||||
</html> |
<!DOCTYPE html> | |||||
<html> | |||||
<head> | |||||
<meta charset="utf-8"> | |||||
</head> | |||||
<body> | |||||
Hi. | |||||
</body> | |||||
</html> |
module.exports = function(api) { | |||||
api.end(api.template("viewer", { | |||||
title: "lol hi" | |||||
})); | |||||
} |