-
Notifications
You must be signed in to change notification settings - Fork 0
/
controller.js
38 lines (34 loc) · 1.04 KB
/
controller.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
const fs = require('fs')
const path = require('path')
const router = require('koa-router')()
function addMapping (router, mapping) {
for (let url in mapping) {
let path
if (url.startsWith('GET ')) {
path = url.substring(4)
router.get(path, mapping[url])
console.log(`register URL mapping: GET ${path}`)
} else if (url.startsWith('POST ')) {
path = url.substring(5)
router.post(path, mapping[url])
console.log(`register URL mapping: POST ${path}`)
} else {
console.log(`invalid URL: ${url}`)
}
}
}
function addControllers (router, controllersDir) {
const files = fs.readdirSync(path.join(__dirname, controllersDir))
const jsFiles = files.filter((f) => {
return f.endsWith('.js')
})
for (let f of jsFiles) {
console.log(`process controller: ${f}...`)
let mapping = require(path.join(__dirname, controllersDir) + '/' + f)
addMapping(router, mapping)
}
}
module.exports = function (controllersDir) {
addControllers(router, controllersDir)
return router.routes()
}