UNPKG

1.53 kBtext/coffeescriptView Raw
1cors = require 'cors'
2morgan = require 'morgan'
3express = require 'express'
4bodyParser = require 'body-parser'
5errorHandler = require 'errorhandler'
6meshbluHealthcheck = require 'express-meshblu-healthcheck'
7MeshbluAuth = require 'express-meshblu-auth'
8expressVersion = require 'express-package-version'
9SendError = require 'express-send-error'
10debug = require('debug')('triggers-service:server')
11Router = require './router'
12multer = require 'multer'
13
14class 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 # app.use bodyParser.raw type: 'multipart/form-data', limit: '50mb', extended: true
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
48module.exports = Server