UNPKG

1.41 kBtext/coffeescriptView Raw
1JobToHttp = require '../helpers/job-to-http'
2debug = require('debug')('meshblu-server-http:get-device-controller')
3_ = require 'lodash'
4
5class DeviceV1Controller
6 constructor: ({@jobManager, @jobToHttp}) ->
7
8 get: (req, res) =>
9 job = @jobToHttp.httpToJob jobType: 'GetDevice', request: req, toUuid: req.params.uuid
10
11 debug('dispatching request', job)
12 @jobManager.do 'request', 'response', job, (error, jobResponse) =>
13 if !error? && jobResponse.metadata?.code == 403
14 error = code: 404, message: 'Devices not found'
15
16 if error?
17 if error.code == 403 # backwards compatibility with meshblu
18 error.code = 404
19 error.message = 'Devices not found'
20
21 jsonError =
22 code: error.code
23 message: error.message
24 return res.status(error.code ? 500).send jsonError
25
26 _.each jobResponse.metadata, (value, key) => res.set "x-meshblu-#{key}", value
27 data = JSON.parse jobResponse.rawData
28 res.status(jobResponse.metadata.code).send devices: [data]
29
30 getPublicKey: (req, res) =>
31 job = @jobToHttp.httpToJob jobType: 'GetDevicePublicKey', request: req, toUuid: req.params.uuid
32 debug('dispatching request', job)
33
34 @jobManager.do 'request', 'response', job, (error, jobResponse) =>
35 return res.sendError error if error?
36 @jobToHttp.sendJobResponse {jobResponse, res}
37
38module.exports = DeviceV1Controller