UNPKG

1.91 kBtext/coffeescriptView Raw
1morgan = require 'morgan'
2express = require 'express'
3bodyParser = require 'body-parser'
4errorHandler = require 'errorhandler'
5MeshbluConfig = require 'meshblu-config'
6MeshbluAuth = require 'express-meshblu-auth'
7meshbluHealthcheck = require 'express-meshblu-healthcheck'
8expressVersion = require 'express-package-version'
9InstancesController = require './src/controllers/instances-controller'
10IotAppController = require './src/controllers/iot-app-controller'
11debug = require('debug')('nanocyte-flow-deploy-service')
12cors = require 'cors'
13
14MONGODB_URI = process.env.MONGODB_URI
15REDIS_URI = process.env.REDIS_URI
16
17throw new Error 'MONGODB_URI is required' unless MONGODB_URI?
18throw new Error 'REDIS_URI is required' unless REDIS_URI?
19
20instancesController = new InstancesController {MONGODB_URI, REDIS_URI}
21iotAppController = new IotAppController {MONGODB_URI, REDIS_URI}
22
23PORT = process.env.PORT ? 80
24
25meshbluConfig = new MeshbluConfig
26meshbluAuth = new MeshbluAuth meshbluConfig.toJSON()
27app = express()
28app.use cors()
29app.use meshbluHealthcheck()
30app.use expressVersion({format: '{"version": "%s"}'})
31app.use morgan 'dev'
32app.use errorHandler()
33app.use meshbluAuth.retrieve()
34app.use meshbluAuth.gateway()
35app.use bodyParser.urlencoded limit: '50mb', extended : true
36app.use bodyParser.json limit : '50mb'
37
38app.post '/bluprint/:appId/:version', iotAppController.publish
39app.post '/bluprint/:appId/:version/link', iotAppController.link
40
41
42app.post '/flows/:flowId/instances', instancesController.create
43app.delete '/flows/:flowId/instances', instancesController.destroy
44
45server = app.listen PORT, ->
46 host = server.address().address
47 port = server.address().port
48
49 console.log "Server running on #{host}:#{port}"
50
51process.on 'SIGTERM', =>
52 console.log 'SIGTERM caught, exiting'
53 process.exit 0