1 | debug = require('debug')('meshblu-server-http:subscription-controller')
|
2 | _ = require 'lodash'
|
3 | JobToHttp = require '../helpers/job-to-http'
|
4 |
|
5 | class 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 |
|
42 | module.exports = SubscriptionsController
|