UNPKG

openhim-core

Version:

The OpenHIM core application that provides logging and routing of http requests

113 lines (101 loc) 4.53 kB
var Q, Visualizer, authorisation, logger, utils; Visualizer = require('../model/visualizer').Visualizer; authorisation = require('./authorisation'); Q = require('q'); utils = require('../utils'); logger = require('winston'); exports.getVisualizers = function*() { var err, error; if (!authorisation.inGroup('admin', this.authenticated)) { return utils.logAndSetResponse(this, 403, "User " + this.authenticated.email + " is not an admin, API access to getVisualizers denied.", 'info'); } try { return this.body = (yield Visualizer.find().exec()); } catch (error) { err = error; return utils.logAndSetResponse(this, 500, "Could not fetch visualizers via the API: " + err, 'error'); } }; exports.getVisualizer = function*(visualizerId) { var err, error, result; if (!authorisation.inGroup('admin', this.authenticated)) { return utils.logAndSetResponse(this, 403, "User " + this.authenticated.email + " is not an admin, API access to getVisualizer denied.", 'info'); } visualizerId = unescape(visualizerId); try { result = (yield Visualizer.findById(visualizerId).exec()); if (!result) { this.body = "Visualizer with _id " + visualizerId + " could not be found."; return this.status = 404; } else { return this.body = result; } } catch (error) { err = error; return utils.logAndSetResponse(this, 500, "Could not fetch visualizer via the API: " + err, 'error'); } }; exports.addVisualizer = function*() { var err, error, result, visualizer, visualizerData; if (!authorisation.inGroup('admin', this.authenticated)) { return utils.logAndSetResponse(this, 403, "User " + this.authenticated.email + " is not an admin, API access to addVisualizer denied.", 'info'); } visualizerData = this.request.body; if (!visualizerData) { return utils.logAndSetResponse(this, 404, "Cannot Add Visualizer, no request object", 'info'); } try { visualizer = new Visualizer(visualizerData); result = (yield Q.ninvoke(visualizer, 'save')); this.body = 'Visualizer successfully created'; this.status = 201; return logger.info('User %s created visualizer with id %s', this.authenticated.email, visualizer.id); } catch (error) { err = error; return utils.logAndSetResponse(this, 500, "Could not add visualizer via the API: " + err, 'error'); } }; exports.updateVisualizer = function*(visualizerId) { var e, error, result, visualizerData; if (!authorisation.inGroup('admin', this.authenticated)) { return utils.logAndSetResponse(this, 403, "User " + this.authenticated.email + " is not an admin, API access to updateVisualizer denied.", 'info'); } visualizerData = this.request.body; if (!visualizerData) { return utils.logAndSetResponse(this, 404, "Cannot Update Visualizer with _id " + visualizerId + ", no request object", 'info'); } visualizerId = unescape(visualizerId); if (visualizerData._id) { delete visualizerData._id; } try { result = (yield Visualizer.findByIdAndUpdate(visualizerId, visualizerData).exec()); if (!result) { return utils.logAndSetResponse(this, 404, "Cannot Update Visualizer with _id " + visualizerId + ", does not exist", 'info'); } this.body = "Successfully updated visualizer with _id " + visualizerId; return logger.info("User " + this.authenticated.email + " updated visualizer with _id " + visualizerId); } catch (error) { e = error; return utils.logAndSetResponse(this, 500, "Could not update visualizer with _id " + visualizerId + " via the API " + e, 'error'); } }; exports.removeVisualizer = function*(visualizerId) { var e, error, v; if (!authorisation.inGroup('admin', this.authenticated)) { return utils.logAndSetResponse(this, 403, "User " + this.authenticated.email + " is not an admin, API access to removeVisualizer denied.", 'info'); } visualizerId = unescape(visualizerId); try { v = (yield Visualizer.findByIdAndRemove(visualizerId).exec()); if (!v) { return utils.logAndSetResponse(this, 404, "Could not find visualizer with _id " + visualizerId, 'info'); } this.body = "Successfully removed visualizer with _id " + visualizerId; return logger.info("User " + this.authenticated.email + " removed visualizer with _id " + visualizerId); } catch (error) { e = error; return utils.logAndSetResponse(this, 500, "Could not remove visualizer with _id " + visualizerId + " via the API " + e, 'error'); } }; //# sourceMappingURL=visualizers.js.map