diff --git a/src/bin/www.js b/src/bin/www.js index 0101581d..9cbba666 100644 --- a/src/bin/www.js +++ b/src/bin/www.js @@ -3,9 +3,10 @@ require('babel-polyfill'); var config = require("../config").default; var db = require("../core/db"); -var app = require("../server").app; +var server = require("../server").server; db.init(config.db.uri) .then(function () { + var app = server(); app.listen(config.port); }); diff --git a/src/server.js b/src/server.js index 9da02dd7..c500e500 100644 --- a/src/server.js +++ b/src/server.js @@ -1,6 +1,5 @@ import path from 'path'; import koa from 'koa'; -import route from 'koa-route'; import serve from 'koa-static'; import logger from 'koa-logger'; import conditional from 'koa-conditional-get'; @@ -11,53 +10,42 @@ import bodyParser from 'koa-bodyparser'; import config from './config'; import {redirectionTable} from './config'; -import {index, queryObject} from './routes'; +import {routes, queryObject} from './routes'; +import api from './routes/api'; import {redirect} from './routes/redirect'; -import sitemap from './routes/sitemap'; -import schedule from './routes/schedule'; -import news from './routes/news'; -import gallery from './routes/gallery'; -import error404 from './routes/404'; -import documents from './routes/documents'; -import teachers from './routes/teachers'; -import events from './routes/events'; -import articles from './routes/articles'; - const dirPublic = path.join(__dirname, '../public'); const dirTemplates = path.join(__dirname, 'templates'); -export const app = koa(); -app.proxy = true; +export function server(){ + const app = koa(); + app.proxy = true; -app.use(bodyParser()); -app.use(logger()); -app.use(conditional()); -app.use(etag()); + app.use(bodyParser()); + app.use(logger()); + api(app); + app.use(conditional()); + app.use(etag()); + app.use(prerenderRmFragment()); + app.use(prerender(config.prerender)); + app.use(serve(dirPublic)); + app.use(serve(dirTemplates)); + app.use(redirect(redirectionTable)); + app.use(helmet()); + app.use(queryObject()); + routes(app); + + return app; +} -app.use(function *(next) { - yield* next; +function prerenderRmFragment(){ + return function *(next) { + yield* next; - try { - let xp = this.response.header['x-prerender'] == 'true'; - if (xp) this.body = this.body.replace('', ''); - } catch (e) { + try { + let xp = this.response.header['x-prerender'] == 'true'; + if (xp) this.body = this.body.replace('', ''); + } catch (e) { + } } -}); -app.use(prerender(config.prerender)); -app.use(serve(dirPublic)); -app.use(serve(dirTemplates)); -app.use(redirect(redirectionTable)); -app.use(helmet()); -app.use(queryObject()); -app.use(route.get('/', index())); - -sitemap(app); -schedule(app); -news(app); -gallery(app); -documents(app); -events(app); -articles(app); -teachers(app); -app.use(error404()); +} \ No newline at end of file