diff options
Diffstat (limited to 'src/web')
-rw-r--r-- | src/web/DillerWeb.js | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/web/DillerWeb.js b/src/web/DillerWeb.js index bcb15d4..3f1d107 100644 --- a/src/web/DillerWeb.js +++ b/src/web/DillerWeb.js @@ -20,8 +20,11 @@ function DillerWeb(tx, config) { function genericErrorHandler(res) { return function (data) { + if (typeof data === 'string') { + data = {message: data} + } log.warn('fail', data); - return res.status(500).json({message: 'fail', data: data}) + return res.status(500).json(data); } } @@ -58,25 +61,24 @@ function DillerWeb(tx, config) { var body = req.body; + var p; if (!body.attribute) { res.status(400).json({message: 'Required keys: "attribute" and "value".'}); } else if (body.attribute == 'name' || body.attribute == 'description') { var attributes = {}; attributes[body.attribute] = body.value; - return diller.updateDeviceAttributes(deviceId, attributes) - .then(function () { - return pg.batch([ - dao.deviceById(deviceId), - dao.devicePropertiesByDeviceId(deviceId)] - ); - }) - .then(function (data) { - res.json(deviceResponse(data)); - }, genericErrorHandler(res)); + p = diller.updateDeviceAttributes(deviceId, attributes); } else { - res.status(400).json({message: 'Unsupported attribute: ' + body.attribute}); + p = Promise.reject('Unsupported attribute: ' + body.attribute); } + + return p.then(function () { + return pg.batch([ + dao.deviceById(deviceId), + dao.devicePropertiesByDeviceId(deviceId)] + ); + }); }).then(function (data) { var device = data[0]; device.properties = data[1]; |