generic getObject

v1.18.x
barisusakli 10 years ago
parent 1dd706d0b2
commit f3b6a5fbb9

@ -1,12 +1,18 @@
"use strict";
var meta = require('./../meta'),
user = require('./../user'),
plugins = require('./../plugins'),
widgets = require('../widgets'),
var async = require('async'),
validator = require('validator'),
nconf = require('nconf');
nconf = require('nconf'),
meta = require('../meta'),
user = require('../user'),
posts = require('../posts'),
topics = require('../topics'),
categories = require('../categories'),
privileges = require('../privileges'),
plugins = require('../plugins'),
helpers = require('./helpers'),
widgets = require('../widgets');
var apiController = {};
@ -130,4 +136,41 @@ apiController.renderWidgets = function(req, res, next) {
});
};
apiController.getObject = function(req, res, next) {
var methods = {
post: {
canRead: privileges.posts.can,
data: posts.getPostData
},
topic: {
canRead: privileges.topics.can,
data: topics.getTopicData
},
category: {
canRead: privileges.categories.can,
data: categories.getCategoryData
}
};
if (!methods[req.params.type]) {
return next();
}
async.parallel({
canRead: async.apply(methods[req.params.type].canRead, 'read', req.params.id, req.uid),
data: async.apply(methods[req.params.type].data, req.params.id)
}, function(err, results) {
if (err || !results.data) {
return next(err);
}
if (!results.canRead) {
return helpers.notAllowed(req, res);
}
res.json(results.data);
});
};
module.exports = apiController;

@ -266,21 +266,5 @@ categoriesController.get = function(req, res, callback) {
});
};
categoriesController.getCategory = function(req, res, next) {
async.parallel({
canRead: async.apply(privileges.categories.can, 'read', req.params.cid, req.uid),
categoryData: async.apply(categories.getCategoryData, req.params.cid)
}, function(err, results) {
if (err || !results.categoryData) {
return next(err);
}
if (!results.canRead) {
return helpers.notAllowed(req, res);
}
res.json(results.categoryData);
});
};
module.exports = categoriesController;

@ -1,33 +0,0 @@
"use strict";
var async = require('async'),
posts = require('../posts'),
privileges = require('../privileges'),
helpers = require('./helpers'),
postsController = {};
postsController.getPost = function(req, res, next) {
async.parallel({
canRead: function(next) {
privileges.posts.can('read', req.params.pid, req.uid, next);
},
postData: function(next) {
posts.getPostData(req.params.pid, next);
}
}, function(err, results) {
if (err || !results.postData) {
return next(err);
}
if (!results.canRead) {
return helpers.notAllowed(req, res);
}
res.json(results.postData);
});
};
module.exports = postsController;

@ -313,21 +313,5 @@ topicsController.teaser = function(req, res, next) {
});
};
topicsController.getTopic = function(req, res, next) {
async.parallel({
canRead: async.apply(privileges.topics.can, 'read', req.params.tid, req.uid),
topicData: async.apply(topics.getTopicData, req.params.tid)
}, function(err, results) {
if (err || !results.topicData) {
return next(err);
}
if (!results.canRead) {
return helpers.notAllowed(req, res);
}
res.json(results.topicData);
});
};
module.exports = topicsController;

@ -15,9 +15,9 @@ module.exports = function(app, middleware, controllers) {
router.get('/widgets/render', controllers.api.renderWidgets);
router.get('/user/uid/:uid', middleware.checkGlobalPrivacySettings, controllers.accounts.getUserByUID);
router.get('/post/pid/:pid', controllers.posts.getPost);
router.get('/topic/tid/:tid', controllers.topics.getTopic);
router.get('/category/cid/:cid', controllers.categories.getCategory);
router.get('/:type/pid/:id', controllers.api.getObject);
router.get('/:type/tid/:id', controllers.api.getObject);
router.get('/:type/cid/:id', controllers.api.getObject);
router.get('/categories/:cid/moderators', getModerators);
router.get('/recent/posts/:term?', getRecentPosts);

Loading…
Cancel
Save