-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path[[...routes]].ts
55 lines (49 loc) · 1.42 KB
/
[[...routes]].ts
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import koaBody from 'koa-body'
import { collectionRouter } from 'lib/server/api/collection/routes'
import { miscRouter } from 'lib/server/api/misc/routes'
import {
ApiContext,
buildContext,
handleServerError
} from 'lib/server/api/shared-middleware'
import { stationRouter } from 'lib/server/api/station/routes'
import { ServerConfig } from 'lib/server/config'
import { getServerContainer } from 'lib/server/injection-root'
import { PublicServerError } from 'lib/server/server-error'
import { attachRouter, Koa, KoaApi, withKoaApi } from 'nextjs-koa-api'
import { PumpIt } from 'pumpit'
export const config = {
api: {
bodyParser: false
}
}
export function handler(container: PumpIt) {
const api = new KoaApi<Koa.DefaultState, ApiContext>({
koa: {
env: container.resolve<ServerConfig>('config').env
},
attachBody: false
})
api
.use(buildContext(container))
.use(handleServerError)
.use(
koaBody({
jsonLimit: '1mb',
onError: (err) => {
throw new PublicServerError({
body: { msg: 'Entity to large ' },
status: 413,
diagnostics: {
error: err
}
})
}
})
)
attachRouter('/api', api, miscRouter())
attachRouter('/api/collection', api, collectionRouter())
attachRouter('/api/station', api, stationRouter())
return api
}
export default withKoaApi(handler(getServerContainer()))