triggers-service
Version:
Service to list and activate Octoblu triggers within running flows
33 lines (25 loc) • 1.05 kB
text/coffeescript
_ = require 'lodash'
class TriggerParser
: ({devices,type,flowContains}) =>
triggers = []
flowContains = [flowContains] unless _.isArray flowContains
flowContains = _.compact flowContains
return triggers unless devices?
_.each devices, (device) =>
triggers = _.union triggers, TriggerParser.collectTriggersFromDevice({device,type,flowContains})
triggers
: ({device, type, flowContains}) =>
type ?= 'operation:trigger'
triggersInFlow = _.filter device.flow?.nodes, {type}
unless _.isEmpty flowContains
return [] unless _.every flowContains, (nodeType) =>
_.find(device.flow?.nodes, type: nodeType)?
_.map triggersInFlow, (trigger) =>
data =
name: trigger.name
flowId: device.uuid
flowName: device.name ? ''
id: trigger.id
online: device.online
uri: "https://triggers.octoblu.com/flows/#{device.uuid}/triggers/#{trigger.id}"
module.exports = TriggerParser