UNPKG

1.97 kBtext/coffeescriptView Raw
1debug = require('debug')('meshblu-server-http:subscription-controller')
2_ = require 'lodash'
3JobToHttp = require '../helpers/job-to-http'
4
5class SubscriptionsController
6 constructor: ({@jobManager, @jobToHttp}) ->
7
8 list: (req, res) =>
9 job = @jobToHttp.httpToJob jobType: 'SubscriptionList', request: req, toUuid: req.params.uuid
10
11 @jobManager.do 'request', 'response', job, (error, jobResponse) =>
12 return res.sendError error if error?
13 return res.sendError new Error('Did not receive jobResponse') unless jobResponse?
14
15 _.each jobResponse.metadata, (value, key) => res.set "x-meshblu-#{_.kebabCase(key)}", value
16 return res.sendStatus jobResponse.metadata.code unless jobResponse.rawData?
17 subscriptions = _.map JSON.parse(jobResponse.rawData), (subscription) =>
18 uuid: subscription.emitterUuid
19 type: subscription.type
20
21 res.status(200).send(subscriptions)
22
23 create: (req, res) =>
24 req.body = _.pick req.params, ['subscriberUuid', 'emitterUuid', 'type']
25 job = @jobToHttp.httpToJob jobType: 'CreateSubscription', request: req, toUuid: req.params.emitterUuid
26
27 @jobManager.do 'request', 'response', job, (error, jobResponse) =>
28 return res.sendError error if error?
29 return res.sendError new Error('Did not receive jobResponse') unless jobResponse?
30 jobResponse.metadata.code = 204 if jobResponse.metadata.code == 304
31 @jobToHttp.sendJobResponse {jobResponse, res}
32
33 remove: (req, res) =>
34 req.body = _.pick req.params, ['subscriberUuid', 'emitterUuid', 'type']
35 job = @jobToHttp.httpToJob jobType: 'RemoveSubscription', request: req, toUuid: req.params.emitterUuid
36
37 @jobManager.do 'request', 'response', job, (error, jobResponse) =>
38 return res.sendError error if error?
39 return res.sendError new Error('Did not receive jobResponse') unless jobResponse?
40 @jobToHttp.sendJobResponse {jobResponse, res}
41
42module.exports = SubscriptionsController