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