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