UNPKG

2.77 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
14serverOptions = {
15 mongoDbUri: process.env.MONGODB_URI
16 redisUri: process.env.REDIS_URI
17 intervalServiceUri: process.env.INTERVAL_SERVICE_URI
18 octobluUrl: process.env.OCTOBLU_URL
19 flowLoggerUuid: process.env.FLOW_LOGGER_UUID
20 nanocyteEngineUrl: process.env.NANOCYTE_ENGINE_URL
21 nodeRegistryUrl: process.env.NODE_REGISTRY_URL
22 awsAccessKeyId: process.env.AWS_ACCESS_KEY_ID
23 awsSecretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
24}
25
26throw new Error 'MONGODB_URI is required' unless serverOptions.mongoDbUri?
27throw new Error 'REDIS_URI is required' unless serverOptions.redisUri?
28throw new Error 'INTERVAL_SERVICE_URI is required' unless serverOptions.intervalServiceUri?
29throw new Error 'OCTOBLU_URL is required' unless serverOptions.octobluUrl?
30throw new Error 'NANOCYTE_ENGINE_URL is required' unless serverOptions.nanocyteEngineUrl?
31throw new Error 'NODE_REGISTRY_URL is required' unless serverOptions.nodeRegistryUrl?
32throw new Error 'AWS_ACCESS_KEY_ID is required' unless serverOptions.awsAccessKeyId?
33throw new Error 'AWS_SECRET_ACCESS_KEY is required' unless serverOptions.awsSecretAccessKey?
34
35instancesController = new InstancesController serverOptions
36iotAppController = new IotAppController serverOptions
37
38PORT = process.env.PORT ? 80
39
40meshbluConfig = new MeshbluConfig
41meshbluAuth = new MeshbluAuth meshbluConfig.toJSON()
42app = express()
43app.use cors()
44app.use meshbluHealthcheck()
45app.use expressVersion({format: '{"version": "%s"}'})
46app.use morgan 'dev'
47app.use errorHandler()
48app.use meshbluAuth.get()
49app.use meshbluAuth.gateway()
50app.use bodyParser.urlencoded limit: '50mb', extended : true
51app.use bodyParser.json limit : '50mb'
52
53app.post '/bluprint/:appId', iotAppController.publish
54app.post '/bluprint/:appId/link', iotAppController.link
55
56app.post '/flows/:flowId/instances', instancesController.create
57app.delete '/flows/:flowId/instances', instancesController.destroy
58
59server = app.listen PORT, ->
60 host = server.address().address
61 port = server.address().port
62
63 console.log "Server running on #{host}:#{port}"
64
65process.on 'SIGTERM', =>
66 console.log 'SIGTERM caught, exiting'
67 process.exit 0