UNPKG

1.51 kBtext/coffeescriptView Raw
1cors = require 'cors'
2morgan = require 'morgan'
3express = require 'express'
4bodyParser = require 'body-parser'
5OctobluRaven = require 'octoblu-raven'
6compression = require 'compression'
7enableDestroy = require 'server-destroy'
8expressVersion = require 'express-package-version'
9sendError = require 'express-send-error'
10meshbluHealthcheck = require 'express-meshblu-healthcheck'
11debug = require('debug')('file-downloader-service:server')
12Router = require './router'
13
14class Server
15 constructor: ({@disableLogging, @port, @octobluRaven})->
16 @octobluRaven ?= new OctobluRaven
17
18 address: =>
19 @server.address()
20
21 run: (callback) =>
22 app = express()
23 app.use compression()
24 ravenExpress = @octobluRaven.express()
25 app.use ravenExpress.handleErrors()
26 app.use sendError()
27 app.use meshbluHealthcheck()
28 skip = (request, response) =>
29 return response.statusCode < 400
30 app.use morgan 'dev', { immediate: false, skip } unless @disableLogging
31 app.use expressVersion({format: '{"version": "%s"}'})
32 app.use cors()
33 app.use bodyParser.urlencoded limit: '1mb', extended : true
34 app.use bodyParser.json limit : '1mb'
35
36 app.options '*', cors()
37
38 router = new Router {}
39
40 router.route app
41
42 @server = app.listen @port, callback
43 enableDestroy @server
44
45 stop: (callback) =>
46 @server.close callback
47
48 destroy: =>
49 @server.destroy()
50
51module.exports = Server