1 | cors = require 'cors'
|
2 | morgan = require 'morgan'
|
3 | express = require 'express'
|
4 | bodyParser = require 'body-parser'
|
5 | errorHandler = require 'errorhandler'
|
6 | meshbluHealthcheck = require 'express-meshblu-healthcheck'
|
7 | MeshbluAuth = require 'express-meshblu-auth'
|
8 | expressVersion = require 'express-package-version'
|
9 | SendError = require 'express-send-error'
|
10 | debug = require('debug')('triggers-service:server')
|
11 | Router = require './router'
|
12 | multer = require 'multer'
|
13 |
|
14 | class Server
|
15 | constructor: (options)->
|
16 | {@disableLogging, @port} = options
|
17 | {@meshbluConfig} = options
|
18 |
|
19 | address: =>
|
20 | @server.address()
|
21 |
|
22 | run: (callback) =>
|
23 | meshbluAuth = new MeshbluAuth @meshbluConfig
|
24 |
|
25 | app = express()
|
26 | app.use meshbluHealthcheck()
|
27 | app.use expressVersion(format: '{"version": "%s"}')
|
28 | app.use SendError()
|
29 | app.use morgan 'dev', immediate: false unless @disableLogging
|
30 | app.use cors()
|
31 | app.use errorHandler()
|
32 | app.use meshbluAuth.retrieve()
|
33 | app.use multer().any()
|
34 |
|
35 | app.use bodyParser.urlencoded limit: '50mb', extended : true, defer: true
|
36 | app.use bodyParser.json limit : '50mb', defer: true
|
37 |
|
38 | app.options '*', cors()
|
39 |
|
40 | router = new Router {@meshbluConfig, meshbluAuth}
|
41 | router.route app
|
42 |
|
43 | @server = app.listen @port, callback
|
44 |
|
45 | stop: (callback) =>
|
46 | @server.close callback
|
47 |
|
48 | module.exports = Server
|