keystone
Version:
Web Application Framework and Admin GUI / Content Management System built on Express.js and Mongoose
70 lines (63 loc) • 1.81 kB
JavaScript
/*
TODO: Needs Review and Spec
*/
module.exports = {
upload: function (req, res) {
var cloudinary = require('cloudinary');
var keystone = req.keystone;
if (req.files && req.files.file) {
var options = {};
if (keystone.get('wysiwyg cloudinary images filenameAsPublicID')) {
options.public_id = req.files.file.originalname.substring(0, req.files.file.originalname.lastIndexOf('.'));
}
cloudinary.uploader.upload(req.files.file.path, function (result) {
var sendResult = function () {
if (result.error) {
res.send({ error: { message: result.error.message } });
} else {
res.send({ image: { url: (keystone.get('cloudinary secure') === true) ? result.secure_url : result.url } });
}
};
// TinyMCE upload plugin uses the iframe transport technique
// so the response type must be text/html
res.format({
html: sendResult,
json: sendResult,
});
}, options);
} else {
res.json({ error: { message: 'No image selected' } });
}
},
autocomplete: function (req, res) {
var cloudinary = require('cloudinary');
var max = req.query.max || 10;
var prefix = req.query.prefix || '';
var next = req.query.next || null;
cloudinary.api.resources(function (result) {
if (result.error) {
res.json({ error: { message: result.error.message } });
} else {
res.json({
next: result.next_cursor,
items: result.resources,
});
}
}, {
type: 'upload',
prefix: prefix,
max_results: max,
next_cursor: next,
});
},
get: function (req, res) {
var cloudinary = require('cloudinary');
cloudinary.api.resource(req.query.id, function (result) {
if (result.error) {
res.json({ error: { message: result.error.message } });
} else {
res.json({ item: result });
}
});
},
};