UNPKG

3.08 kBtext/coffeescriptView Raw
1JobToHttp = require '../helpers/job-to-http'
2debug = require('debug')('meshblu-server-http:get-device-controller')
3_ = require 'lodash'
4
5class DeviceV2Controller
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 data = JSON.parse jobResponse.rawData
27 unless data?
28 jsonError =
29 code: 404
30 message: 'Devices not found'
31 return res.status(404).send jsonError
32
33 _.each jobResponse.metadata, (value, key) => res.set "x-meshblu-#{key}", value
34 res.status(jobResponse.metadata.code).send JSON.parse(jobResponse.rawData)
35
36 update: (req, res) =>
37 # insert $set first
38 unless _.isPlainObject req.body
39 return res.status(422).send message: 'Invalid Request'
40 body = req.body
41 delete body.uuid
42 delete body.token
43 req.body = $set: body
44 job = @jobToHttp.httpToJob jobType: 'UpdateDevice', request: req, toUuid: req.params.uuid
45
46 debug('dispatching request', job)
47 @jobManager.do 'request', 'response', job, (error, jobResponse) =>
48 return res.sendError error if error?
49
50 _.each jobResponse.metadata, (value, key) => res.set "x-meshblu-#{key}", value
51 res.status(jobResponse.metadata.code).send JSON.parse(jobResponse.rawData)
52
53 claimdevice: (req, res) =>
54 # insert $set first
55 unless _.isPlainObject req.body
56 return res.status(422).send message: 'Invalid Request'
57 job = @jobToHttp.httpToJob jobType: 'UpdateDevice', request: req, toUuid: req.params.uuid
58 job.data =
59 $addToSet:
60 discoverWhitelist: job.metadata.fromUuid
61 configureWhitelist: job.metadata.fromUuid
62 $set:
63 owner: job.metadata.fromUuid
64
65 debug('dispatching request', job)
66 @jobManager.do 'request', 'response', job, (error, jobResponse) =>
67 return res.sendError error if error?
68
69 _.each jobResponse.metadata, (value, key) => res.set "x-meshblu-#{key}", value
70 res.status(jobResponse.metadata.code).send JSON.parse(jobResponse.rawData)
71
72 updateDangerously: (req, res) =>
73 job = @jobToHttp.httpToJob jobType: 'UpdateDevice', request: req, toUuid: req.params.uuid
74
75 debug('dispatching request', job)
76 @jobManager.do 'request', 'response', job, (error, jobResponse) =>
77 return res.sendError error if error?
78
79 _.each jobResponse.metadata, (value, key) => res.set "x-meshblu-#{key}", value
80 res.status(jobResponse.metadata.code).send JSON.parse(jobResponse.rawData)
81
82module.exports = DeviceV2Controller