UNPKG

botpress

Version:

The world's first CMS for bots. Easily create, manage and extend chatbots.

330 lines (265 loc) 10.7 kB
'use strict'; var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _multer = require('multer'); var _multer2 = _interopRequireDefault(_multer); var _moment = require('moment'); var _moment2 = _interopRequireDefault(_moment); var _util = require('../util'); var _util2 = _interopRequireDefault(_util); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } module.exports = (bp, app) => { // modules app.secure('read', 'bot.modules.list').get('/api/modules', (req, res) => { const modules = _lodash2.default.map(bp._loadedModules, module => { return { name: _util2.default.getModuleShortname(module.name), fullName: module.name, homepage: module.homepage, isPlugin: module.settings.isPlugin, menuText: module.settings.menuText || module.name, menuIcon: module.settings.menuIcon || 'view_module', noInterface: !!module.settings.noInterface, moduleView: module.settings.moduleView || { stretched: false }, plugins: module.settings.plugins || [] }; }); res.send(modules); }); app.secure('read', 'bot.modules.list.community').get('/api/module/hero', (req, res) => { bp.modules.getRandomCommunityHero().then(hero => res.send(hero)); }); app.secure('read', 'bot.modules.list.community').get('/api/bot/contributor', (req, res) => { res.send(bp.bot.getContributor()); }); // middleware app.secure('read', 'bot.middleware.list').get('/api/middlewares', (req, res) => { res.send(bp.middlewares.list()); }); app.secure('write', 'bot.middleware.customizations').post('/api/middlewares/customizations', (req, res) => { bp.stats.track('api', 'middlewares', 'customizations'); const { middlewares } = req.body; bp.middlewares.setCustomizations(middlewares); bp.middlewares.load(); res.send(bp.middlewares.list()); }); app.secure('write', 'bot.middleware.customizations').delete('/api/middlewares/customizations', (req, res) => { bp.stats.track('api', 'middlewares', 'customizations'); bp.middlewares.resetCustomizations(); bp.middlewares.load(); res.send(bp.middlewares.list()); }); // notifications // DEPRECATED in Botpress 1.1 app.secure('read', 'bot.notifications').get('/api/notifications', (() => { var _ref = _asyncToGenerator(function* (req, res) { res.send((yield bp.notifications.getInbox())); }); return function (_x, _x2) { return _ref.apply(this, arguments); }; })()); app.secure('read', 'bot.notifications').get('/api/notifications/inbox', (() => { var _ref2 = _asyncToGenerator(function* (req, res) { res.send((yield bp.notifications.getInbox())); }); return function (_x3, _x4) { return _ref2.apply(this, arguments); }; })()); // bot app.secure('read', 'bot.information').get('/api/bot/information', (req, res) => { res.send(bp.about.getBotInformation()); }); app.secure('write', 'bot.information.license').post('/api/license', (req, res) => { bp.stats.track('api', 'license', 'change'); bp.licensing.changeLicense(req.body.license).then(() => { res.sendStatus(200); }).catch(err => res.status(500).send({ message: err && err.message })); }); app.secure('read', 'bot.logs').get('/api/logs', (req, res) => { bp.logger.queryDb(req.query && req.query.limit || 50).then(results => { res.send(results); }).catch(err => { console.log(err); }); }); app.secure('read', 'bot.logs.archive').get('/api/logs/archive', (req, res) => { bp.stats.track('api', 'logs', 'archive'); bp.logger.queryDb(null, 'asc').then(results => { res.setHeader('Content-type', 'text/plain'); res.setHeader('Content-disposition', 'attachment; filename=logs.txt'); res.send(results.map(({ timestamp, level, message }) => { const time = (0, _moment2.default)(new Date(timestamp)).format('MMM DD HH:mm:ss'); return `${time} ${level}: ${message}`; }).join('\n')); }).catch(err => { console.error(err); res.sendStatus(500); }); }); app.secure('read', 'bot.content').get('/api/content/categories', (() => { var _ref3 = _asyncToGenerator(function* (req, res) { res.send((yield bp.contentManager.listAvailableCategories())); }); return function (_x5, _x6) { return _ref3.apply(this, arguments); }; })()); app.secure('read', 'bot.content').get('/api/content/items', (() => { var _ref4 = _asyncToGenerator(function* (req, res) { const from = req.query.from || 0; const count = req.query.count || 50; let { searchTerm, categoryId, orderBy } = req.query; if (categoryId === 'all') { categoryId = null; } res.send((yield bp.contentManager.listCategoryItems(categoryId, { from, count, searchTerm, orderBy }))); }); return function (_x7, _x8) { return _ref4.apply(this, arguments); }; })()); app.secure('read', 'bot.content').get('/api/content/items/count', (() => { var _ref5 = _asyncToGenerator(function* (req, res) { let { categoryId } = req.query; if (categoryId === 'all') { categoryId = null; } res.send({ count: yield bp.contentManager.categoryItemsCount(categoryId) }); }); return function (_x9, _x10) { return _ref5.apply(this, arguments); }; })()); app.secure('read', 'bot.content').get('/api/content/items/:id', (() => { var _ref6 = _asyncToGenerator(function* (req, res) { res.send((yield bp.contentManager.getItem(req.params.id))); }); return function (_x11, _x12) { return _ref6.apply(this, arguments); }; })()); app.secure('read', 'bot.content').get('/api/content/items-batched/:ids', (() => { var _ref7 = _asyncToGenerator(function* (req, res) { res.send((yield bp.contentManager.getItems(req.params.ids))); }); return function (_x13, _x14) { return _ref7.apply(this, arguments); }; })()); app.secure('write', 'bot.content').post('/api/content/categories/:id/items', (() => { var _ref8 = _asyncToGenerator(function* (req, res) { res.send((yield bp.contentManager.createOrUpdateCategoryItem({ formData: req.body.formData, categoryId: req.params.id }))); }); return function (_x15, _x16) { return _ref8.apply(this, arguments); }; })()); app.secure('write', 'bot.content').post('/api/content/categories/:id/items/:itemId', (() => { var _ref9 = _asyncToGenerator(function* (req, res) { yield bp.contentManager.createOrUpdateCategoryItem({ itemId: req.params.itemId, formData: req.body.formData, categoryId: req.params.id }); res.sendStatus(200); }); return function (_x17, _x18) { return _ref9.apply(this, arguments); }; })()); app.secure('write', 'bot.content').post('/api/content/categories/all/bulk_delete', (() => { var _ref10 = _asyncToGenerator(function* (req, res) { yield bp.contentManager.deleteCategoryItems(req.body); res.sendStatus(200); }); return function (_x19, _x20) { return _ref10.apply(this, arguments); }; })()); app.secure('read', 'bot.ghost_content').get('/api/ghost_content/status', (() => { var _ref11 = _asyncToGenerator(function* (req, res) { res.send((yield bp.ghostManager.getPending())); }); return function (_x21, _x22) { return _ref11.apply(this, arguments); }; })()); app.secure('read', 'bot.ghost_content').get('/api/ghost_content/export', (() => { var _ref12 = _asyncToGenerator(function* (req, res) { res.send((yield bp.ghostManager.getPendingWithContent({ stringifyBinary: true }))); }); return function (_x23, _x24) { return _ref12.apply(this, arguments); }; })()); app.secure('write', 'bot.ghost_content').delete('/api/ghost_content/:folder', (() => { var _ref13 = _asyncToGenerator(function* (req, res) { res.send((yield bp.ghostManager.revertAllPendingChangesForFile(req.params.folder, req.query.file))); }); return function (_x25, _x26) { return _ref13.apply(this, arguments); }; })()); const mediaUploadMulter = (0, _multer2.default)({ limits: { fileSize: 1024 * 1000 * 10 // 100mb } }); app.secure('write', 'bot.media').post('/api/media', mediaUploadMulter.single('file'), (() => { var _ref14 = _asyncToGenerator(function* (req, res) { const filename = yield bp.mediaManager.saveFile(req.file.originalname, req.file.buffer); const url = `/media/${filename}`; return res.json({ url }); }); return function (_x27, _x28) { return _ref14.apply(this, arguments); }; })()); app.secure('read', 'bot.flows').get('/api/flows/all', (() => { var _ref15 = _asyncToGenerator(function* (req, res) { const flows = yield bp.dialogEngine.getFlows(); res.send(flows); }); return function (_x29, _x30) { return _ref15.apply(this, arguments); }; })()); app.secure('read', 'bot.flows').get('/api/flows/available_actions', (() => { var _ref16 = _asyncToGenerator(function* (req, res) { const actions = bp.dialogEngine.getAvailableActions(); res.send(actions); }); return function (_x31, _x32) { return _ref16.apply(this, arguments); }; })()); app.secure('write', 'bot.flows').post('/api/flows/save', (() => { var _ref17 = _asyncToGenerator(function* (req, res) { yield bp.dialogEngine.flowProvider.saveFlows(req.body); res.sendStatus(200); }); return function (_x33, _x34) { return _ref17.apply(this, arguments); }; })()); app.secure('write', 'bot.skills').post('/api/skills/:skillId/generate', (() => { var _ref18 = _asyncToGenerator(function* (req, res) { res.send((yield bp.skills.generateFlow(req.params.skillId, req.body))); }); return function (_x35, _x36) { return _ref18.apply(this, arguments); }; })()); app.get('/api/community/hero', (req, res) => { res.send({ hidden: _lodash2.default.get(bp, 'botfile.heroSection.hidden', false) }); }); }; //# sourceMappingURL=secured.js.map