openhim-core
Version:
The OpenHIM core application that provides logging and routing of http requests
113 lines (101 loc) • 4.53 kB
JavaScript
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