src/index.js (44 lines of code) (raw):

import gu from 'koa-gu' import responseTime from 'koa-response-time' import compress from 'koa-compress' import logger from 'koa-logger' import koa from 'koa' import koaBody from 'koa-body' import koaSession from 'koa-session' import path from 'path' var env = process.env.NODE_ENV || 'development' module.exports = www; function www(opts) { gu.init(); var app = koa(); app.keys = [gu.config.secret]; // logging if ('test' != env) app.use(logger()); // errors app.use(function* (next) { this.err = function(msg) {}; yield next; }); app.use(function* (next) { try { yield next; } catch (e) { this.status = e.status || 500; this.body = "internal error"; this.app.emit('error', e, this); } }); app.use(responseTime()); app.use(compress()); app.use(koaBody({multipart: true, formidable: {maxFieldsSize: 20 * 1024 * 1024}})); app.use(koaSession(app)); if (gu.config.base_url[gu.config.base_url.length -1] !== '/') { app.use(function*(next) { if (this.path === '/' || this.path === gu.config.base_url) { this.redirect(gu.config.base_url + '/') } else yield* next; }) } app.use(gu.router.routes()); app.use(gu.router.allowedMethods()); app.use(gu.static); return app; }