Files
hudozka/server.js
T
2015-03-16 17:21:01 +03:00

81 lines
1.7 KiB
JavaScript

var path = require("path");
var koa = require("koa.io");
var route = require("koa-route");
var serve = require("koa-static");
var logger = require("koa-logger");
var conditional = require("koa-conditional-get");
var etag = require("koa-etag");
var prerender = require("koa-prerender");
var helmet = require("koa-helmet");
var bodyParser = require("koa-bodyparser");
var config = require("./config");
var routes = require("./routes");
var app = koa();
app.proxy = true;
app.use(bodyParser());
app.use(logger());
app.use(conditional());
app.use(etag());
app.use(prerender(config.prerender));
app.use(serve(path.join(__dirname, "public")));
app.use(serve(path.join(__dirname, "templates")));
app.use(helmet.defaults());
app.use(function *(next) {
var q = this.query;
this.query = Object.keys(q)
.reduce(function (q, key) {
var v = q[key];
if(v === "true"){
v = true;
}else if(v === "false"){
v = false;
}
q[key] = v;
return q;
}, q);
yield next;
});
app.use(route.get("/", routes.index()));
app.use(route.get("/team", routes.index()));
app.use(route.get("/docs", routes.index()));
app.use(route.get("/document/:doc", routes.index(
path.join(__dirname, "templates/document.html")
)));
require("./routes/schedule")(app);
require("./routes/news")(app);
require("./routes/404")(app);
require("./instagram/router")(app);
require("./instagram/io")(app);
if (process.env["NODE_ENV"] === "development") {
app.use(route.get("/debug", function *() {
var out = {};
out.ip = this.ip;
out.host = this.host;
out.headers = this.headers;
out.protocol = this.protocol;
out.query = this.query;
out.url = this.url;
this.type = "application/json";
this.body = out;
}));
}
module.exports = function (port) {
app.listen(port);
};