meshblu-server-http
Version:
Maybe. Unofficial. You know how it is.
44 lines (33 loc) • 2.05 kB
text/coffeescript
debug = require('debug')('meshblu-server-http:subscription-controller')
_ = require 'lodash'
JobToHttp = require '../helpers/job-to-http'
class SubscriptionsController
constructor: ({, }) ->
list: (req, res) =>
job = .httpToJob jobType: 'SubscriptionList', request: req, toUuid: req.params.uuid
.do 'request', 'response', job, (error, jobResponse) =>
return res.sendError error if error?
return res.sendError new Error('Did not receive jobResponse') unless jobResponse?
_.each jobResponse.metadata, (value, key) => res.set "x-meshblu-#{_.kebabCase(key)}", value
return res.sendStatus jobResponse.metadata.code unless jobResponse.rawData?
subscriptions = _.map JSON.parse(jobResponse.rawData), (subscription) =>
uuid: subscription.emitterUuid
type: subscription.type
res.status(200).send(subscriptions)
create: (req, res) =>
req.body = _.pick req.params, ['subscriberUuid', 'emitterUuid', 'type']
job = .httpToJob jobType: 'CreateSubscription', request: req, toUuid: req.params.subscriberUuid
.do 'request', 'response', job, (error, jobResponse) =>
return res.sendError error if error?
return res.sendError new Error('Did not receive jobResponse') unless jobResponse?
jobResponse.metadata.code = 204 if jobResponse.metadata.code == 304
jobResponse.metadata.code = 204 if jobResponse.metadata.code == 201
.sendJobResponse {jobResponse, res}
remove: (req, res) =>
req.body = _.pick req.params, ['subscriberUuid', 'emitterUuid', 'type']
job = .httpToJob jobType: 'RemoveSubscription', request: req, toUuid: req.params.subscriberUuid
.do 'request', 'response', job, (error, jobResponse) =>
return res.sendError error if error?
return res.sendError new Error('Did not receive jobResponse') unless jobResponse?
.sendJobResponse {jobResponse, res}
module.exports = SubscriptionsController