Explorar o código

rewrite server.js

jomo %!s(int64=10) %!d(string=hai) anos
pai
achega
d10c94698f
Modificáronse 1 ficheiros con 62 adicións e 5 borrados
  1. 62 5
      server.js

+ 62 - 5
server.js

@@ -2,13 +2,70 @@
 var config = require("./modules/config");
 var config = require("./modules/config");
 var logging = require("./modules/logging");
 var logging = require("./modules/logging");
 var clean = require("./modules/cleaner");
 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
 // cleaning worker
 setInterval(clean.run, config.cleaning_interval * 1000);
 setInterval(clean.run, config.cleaning_interval * 1000);