84 lines
2.2 KiB
JavaScript
84 lines
2.2 KiB
JavaScript
import path from 'path'
|
|
import {Server} from 'http'
|
|
import Koa from 'koa'
|
|
import serve from 'koa-static'
|
|
import logger from 'koa-logger'
|
|
import convert from 'koa-convert'
|
|
import conditional from 'koa-conditional-get'
|
|
import etag from 'koa-etag'
|
|
import helmet from 'koa-helmet'
|
|
import cookie from 'koa-cookie'
|
|
import session from 'koa-session'
|
|
import bodyParser from 'koa-bodyparser'
|
|
|
|
import {queryObject} from './routes'
|
|
import handlebars from 'handlebars'
|
|
|
|
const {sessionConfig, view404} = require('./config')
|
|
const error = require('./middlewares/error')
|
|
const redirect = require('./middlewares/redirect')
|
|
const home = require('./routes/home')
|
|
const article = require('./routes/articles')
|
|
const albums = require('./routes/albums')
|
|
const gallery = require('./routes/gallery')
|
|
const teachers = require('./routes/teachers')
|
|
const documents = require('./routes/documents')
|
|
const document = require('./routes/document')
|
|
const schedule = require('./routes/schedule')
|
|
const pages = require('./routes/pages')
|
|
const sitemap = require('./routes/sitemap')
|
|
const edit = require('./routes/edit')
|
|
|
|
const dirPublic = path.join(__dirname, '../public')
|
|
|
|
handlebars.registerHelper('raw-helper', options => options.fn())
|
|
|
|
export default function (config) {
|
|
const $ = convert
|
|
|
|
const app = new Koa()
|
|
app.keys = ['1234']
|
|
app.proxy = true
|
|
|
|
app.use(bodyParser({
|
|
extendTypes: {
|
|
json: 'application/ejson'
|
|
}
|
|
}))
|
|
app.use(logger())
|
|
app.use(convert(session(sessionConfig, app)))
|
|
app.use(cookie())
|
|
app.use($(conditional()))
|
|
app.use($(etag()))
|
|
app.use(serve(dirPublic))
|
|
app.use(redirect(config.redirect))
|
|
app.use($(helmet()))
|
|
app.use(queryObject())
|
|
|
|
app.use(async (ctx, next) => {
|
|
if (ctx.session.isNew) {
|
|
ctx.session.startDate = new Date()
|
|
}
|
|
|
|
await next()
|
|
})
|
|
|
|
app.use(error.notFound(view404))
|
|
app.use(sitemap())
|
|
|
|
app.use(edit.getEdit())
|
|
app.use(home.getHome(config.articlesPerPage))
|
|
app.use(gallery.getGallery())
|
|
app.use(article.getArticles(config.articlesPerPage))
|
|
app.use(article.getArticle())
|
|
app.use(albums.getAlbum())
|
|
app.use(teachers.getCollective(config.collectiveOrder))
|
|
app.use(teachers.getTeacher())
|
|
app.use(documents.getDocuments())
|
|
app.use(document.getDocument())
|
|
app.use(schedule.getSchedule())
|
|
app.use(pages())
|
|
|
|
return Server(app.callback())
|
|
}
|