forwarder-service
Version:
Creates forwarders and device subscriptions for forwarders
57 lines (45 loc) • 1.9 kB
text/coffeescript
cors = require 'cors'
morgan = require 'morgan'
express = require 'express'
bodyParser = require 'body-parser'
errorHandler = require 'errorhandler'
OctobluRaven = require 'octoblu-raven'
meshbluHealthcheck = require 'express-meshblu-healthcheck'
MeshbluAuth = require 'express-meshblu-auth'
expressVersion = require 'express-package-version'
MeshbluConfig = require 'meshblu-config'
enableDestroy = require 'server-destroy'
debug = require('debug')('forwarder-subscription-service:server')
Router = require './router'
ForwarderSubscriptionService = require './services/forwarder-subscription-service'
class Server
constructor: ({, , }, {})->
?= new MeshbluConfig().toJSON()
?= new OctobluRaven()
address: =>
.address()
run: (callback) =>
{server, port, protocol} =
meshbluAuth = new MeshbluAuth {server, port, protocol}
app = express()
app.use .express().handleErrors()
app.use meshbluHealthcheck()
app.use expressVersion({format: '{"version": "%s"}'})
app.use morgan 'dev', immediate: false unless
app.use cors()
app.use errorHandler()
app.use meshbluAuth.retrieve()
app.use meshbluAuth.gateway()
app.use bodyParser.urlencoded limit: '1mb', extended : true
app.use bodyParser.json limit : '1mb'
app.options '*', cors()
forwarderSubscriptionService = new ForwarderSubscriptionService {server, port, protocol }
router = new Router {, forwarderSubscriptionService}
router.route app
= app.listen , callback
enableDestroy
stop: (callback) =>
.close callback
destroy: =>
.destroy()
module.exports = Server