commons/server/src/server.ts

69 lines
1.5 KiB
TypeScript

import debug from 'debug'
import express from 'express'
import compression from 'compression'
import morgan from 'morgan'
import bodyParser from 'body-parser'
// routes
import UrlCheckRouter from './routes/UrlCheckRouter'
import DdoRouter from './routes/DdoRouter'
// config
import config from './config/config'
// debug
const log = debug('server:index')
const app = express()
function onListening(): void {
log('Server thread started')
}
function onError(error: NodeJS.ErrnoException): void {
if (error.syscall !== 'listen') throw error
switch (error.code) {
case 'EACCES':
log('Required elevated privileges')
process.exit(1)
case 'EADDRINUSE':
log('Port is already in use')
process.exit(1)
default:
throw error
}
}
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*')
res.header(
'Access-Control-Allow-Headers',
'Origin, X-Requested-With, Content-Type, Accept, Authorization'
)
res.header(
'Access-Control-Allow-Methods',
'GET, POST, OPTIONS, PUT, DELETE'
)
next()
})
app.use(morgan('dev'))
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false }))
app.use(compression())
// routes
app.use('/api/v1/urlcheck', UrlCheckRouter)
app.use('/api/v1/ddo', DdoRouter)
/// catch 404
app.use((req, res) => {
res.status(404).send()
})
// listen
const server = app.listen(config.app.port)
server.on('listening', onListening)
server.on('error', onError)
export default server