From d10c94698f350b5143c457dcb14e91ee09ca8c7f Mon Sep 17 00:00:00 2001 From: jomo Date: Fri, 2 Jan 2015 21:15:26 +0100 Subject: [PATCH] rewrite server.js --- server.js | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 62 insertions(+), 5 deletions(-) diff --git a/server.js b/server.js index d49e1b6..6dc6ccc 100644 --- a/server.js +++ b/server.js @@ -2,13 +2,70 @@ var config = require("./modules/config"); var logging = require("./modules/logging"); var clean = require("./modules/cleaner"); -var app = require("./app"); +var http = require("http"); +var mime = require("mime"); +var url = require("url"); +var fs = require("fs"); -app.set("port", process.env.PORT || 3000); +var routes = { + index: require("./routes/index"), + avatars: require("./routes/avatars"), + skins: require("./routes/skins"), + renders: require("./routes/renders") +}; -var server = app.listen(app.get("port"), function() { - logging.debug("Crafatar server listening on port " + server.address().port); -}); +function asset_request(req, res) { + var filename = __dirname + "/public/" + req.pathname; + fs.exists(filename, function(exists) { + if (exists) { + fs.readFile(filename, function(err, contents) { + if (err) { + res.writeHead(500, {"Content-type" : "text/plain"}); + res.end("Internal server error"); + } else { + res.writeHead(200, { + "Content-type" : mime.lookup(filename), + "Content-Length": contents.length + }); + res.end(contents); + } + }); + } else { + res.writeHead(404, { + "Content-type" : "text/plain" + }); + res.end("Not found"); + } + }); +} + +function requestHandler(req, res) { + var querystring = url.parse(req.url).query; + // we need to use url.parse and give the result to url.parse because nodejs + var prequest = url.parse(req.url, querystring); + + console.log("Request: " + prequest.pathname); + console.log("Params: " + JSON.stringify(prequest.query)); + + switch (prequest.pathname) { + case "/": + routes.index(prequest, res); + break; + case "/avatars": + routes.avatars(prequest, res); + break; + case "/skins": + routes.skins(prequest, res); + break; + case "/renders": + routes.renders(prequest, res); + break; + default: + asset_request(prequest, res); + } +} + +http.createServer(requestHandler).listen(process.env.PORT || 3000); // cleaning worker setInterval(clean.run, config.cleaning_interval * 1000); \ No newline at end of file