forwarder-service
Version:
Creates forwarders and device subscriptions for forwarders
69 lines (55 loc) • 2.34 kB
text/coffeescript
MeshbluHttp = require 'meshblu-http'
forwarderTypes = require '../forwarder-types/forwarder-types'
_ = require 'lodash'
class ForwarderSubscriptionService
constructor: ()->
=
'broadcast.sent': 'receiveWhitelist'
'broadcast.received': 'configureWhitelist'
'message.sent': 'configureWhitelist'
'message.received': 'configureWhitelist'
getForwarders:(meshbluAuth, callback) =>
meshbluHttp = meshbluAuth
query =
type:
$regex: "^forwarder"
meshbluHttp.search query, {}, callback
getForwarderSubscriptions:({meshbluAuth, forwarderUuid}, callback ) =>
meshbluHttp = meshbluAuth
meshbluHttp.subscriptions forwarderUuid, callback
addForwarderSubscription: ({meshbluAuth, forwarderUuid, emitterUuid, type}, callback ) =>
meshbluHttp = meshbluAuth
meshbluHttp.device emitterUuid, (error, emitter) =>
return callback error if error?
update = {type, forwarderUuid} if emitter.meshblu?.version == '2.0.0'
update ?= {type, forwarderUuid}
meshbluHttp.updateDangerously emitterUuid, update, (error) =>
return callback( 403, "Cannot modify #{emitterUuid}" ) if error?
meshbluHttp.createSubscription {
subscriberUuid: forwarderUuid
emitterUuid: emitterUuid
type: type
}, callback
getV2PermissionsUpdate: ({type, forwarderUuid}) =>
update =
$addToSet:
"meshblu.whitelists.#{type}": {uuid: forwarderUuid}
getV1PermissionsUpdate: ({type, forwarderUuid}) =>
update =
$addToSet:
"#{@V1_PERMISSION_MAP[type]}": forwarderUuid
removeForwarderSubscription: ({meshbluAuth, forwarderUuid, emitterUuid, type}, callback ) =>
meshbluHttp = meshbluAuth
meshbluHttp.deleteSubscription {
subscriberUuid: forwarderUuid
emitterUuid: emitterUuid
type: type
}, callback
_createError: (code, message) =>
error = new Error message
error.code = code if code?
return error
_getMeshbluHttp: (meshbluAuth) =>
meshbluConfig = _.extend {}, , meshbluAuth
new MeshbluHttp meshbluConfig
module.exports = ForwarderSubscriptionService