UNPKG

meshblu-server-http

Version:
44 lines (33 loc) 2.05 kB
debug = require('debug')('meshblu-server-http:subscription-controller') _ = require 'lodash' JobToHttp = require '../helpers/job-to-http' class SubscriptionsController constructor: ({@jobManager, @jobToHttp}) -> list: (req, res) => job = @jobToHttp.httpToJob jobType: 'SubscriptionList', request: req, toUuid: req.params.uuid @jobManager.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 = @jobToHttp.httpToJob jobType: 'CreateSubscription', request: req, toUuid: req.params.subscriberUuid @jobManager.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 @jobToHttp.sendJobResponse {jobResponse, res} remove: (req, res) => req.body = _.pick req.params, ['subscriberUuid', 'emitterUuid', 'type'] job = @jobToHttp.httpToJob jobType: 'RemoveSubscription', request: req, toUuid: req.params.subscriberUuid @jobManager.do 'request', 'response', job, (error, jobResponse) => return res.sendError error if error? return res.sendError new Error('Did not receive jobResponse') unless jobResponse? @jobToHttp.sendJobResponse {jobResponse, res} module.exports = SubscriptionsController