You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.3 KiB
JavaScript
52 lines
1.3 KiB
JavaScript
import http from 'http'
|
|
import express from 'express'
|
|
import cors from 'cors'
|
|
import bodyParser from 'body-parser'
|
|
import api from './api'
|
|
import config from './config'
|
|
import { ErrorHandlerService, EsProxy, MongoProxy, StorageService } from './services'
|
|
|
|
const createLogRecord = (type, message) => ({
|
|
type: type,
|
|
source_id: 'serviceapi',
|
|
message: message
|
|
})
|
|
|
|
let app = express()
|
|
|
|
app.server = http.createServer(app)
|
|
|
|
app.use(cors({
|
|
credentials: true,
|
|
origin: true
|
|
}))
|
|
|
|
app.use(bodyParser.json({
|
|
limit: config.bodyLimit
|
|
}))
|
|
|
|
// connect to storage
|
|
StorageService.initializeStorage()
|
|
.then((storage) =>
|
|
MongoProxy.initDefaultTaggingRules(storage.mongoDb)
|
|
.then(() => {
|
|
app.use('/api', api({ config, storage }))
|
|
app.use(ErrorHandlerService(storage.elasticSearch))
|
|
app.server.listen(process.env.PORT || config.localPort)
|
|
|
|
//eslint-disable-next-line no-console
|
|
console.log(`Started on ${app.server.address().address}:${app.server.address().port}`)
|
|
|
|
EsProxy.indexLogItem(
|
|
storage.elasticSearch,
|
|
createLogRecord('info', `Started on ${app.server.address().address}:${app.server.address().port}`)
|
|
)
|
|
})
|
|
)
|
|
.catch((err) => {
|
|
//eslint-disable-next-line no-console
|
|
console.log('Catastrophic failure!', err.toString())
|
|
process.exit(1)
|
|
})
|
|
|
|
export default app |