triggers-service
Version:
Service to list and activate Octoblu triggers within running flows
91 lines (72 loc) • 2.66 kB
text/coffeescript
_ = require 'lodash'
MeshbluHttp = require 'meshblu-http'
TriggerParser = require '../helpers/trigger-parser'
debug = require('debug')('triggers-service:triggers-service')
randomstring = require 'randomstring'
class TriggersService
constructor: ({}) ->
= new MeshbluHttp
getTriggerByNames: ({name, type}, callback) =>
type ?= 'operation:trigger'
query =
type: 'octoblu:flow'
online: true
owner: .uuid
'flow.nodes':
'$elemMatch':
name: name
type: type
{query, type}, callback
allTriggers: ({type, flowContains}, callback) =>
query =
type: 'octoblu:flow'
online: true
{query, type, flowContains}, callback
myTriggers: ({type, flowContains}, callback) =>
query =
type: 'octoblu:flow'
owner: .uuid
online: true
{query, type, flowContains}, callback
sendMessageById: ({flowId,triggerId,body,uploadedFiles,defaultPayload}, callback) =>
payloadOptions =
from: triggerId
params: body
payload: body
files: uploadedFiles
payload = _.extend {}, defaultPayload, payloadOptions
message =
devices: [flowId]
topic: 'triggers-service'
payload: payload
.message message, (error, body) =>
return callback error if error?
return callback null
sendMessageByIdV2: ({flowId,triggerId,body,uploadedFiles,defaultPayload}, callback) =>
message =
metadata:
createdAt: Date.now()
to:
nodeId: triggerId
files: uploadedFiles
devices: [flowId]
data: body
.message message, (error, body) =>
return callback error if error?
return callback null
sendMessageByName: ({triggerName,body,uploadedFiles,defaultPayload,type}, callback) =>
{name: triggerName, type: type}, (error, triggers) =>
return callback error if error?
trigger = _.find triggers, name: triggerName
unless trigger?
error = new Error 'No Trigger by that name'
error.code = 404
return callback error
{id,flowId} = trigger
{flowId,triggerId:id,body,uploadedFiles,defaultPayload}, callback
_queryAndParse: ({query, type, flowContains}, callback) =>
.devices query, (error, devices) =>
return callback error if error?
triggers = TriggerParser.parseTriggersFromDevices {devices, type, flowContains}
callback null, triggers
module.exports = TriggersService