UNPKG

botpress

Version:

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

82 lines (55 loc) 3.01 kB
'use strict'; var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios); var _util = require('../util'); var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); 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"); }); }; } const hostnameRegex = /^(http|https):\/\/(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9-]*[a-zA-Z0-9]).)*([A-Za-z]|[A-Za-z][A-Za-z0-9-]*[A-Za-z0-9])(:\d+)?$/gi; module.exports = (() => { var _ref = _asyncToGenerator(function* (token, options) { const opts = options.opts(); const projectPath = _path2.default.resolve('.'); const endpoint = opts.endpoint; if (!token || !token.length) { return _util.print.error('Please provide a valid token. e.g. "botpress cloud-pair your-secret-token"'); } if (!hostnameRegex.test(endpoint)) { return _util.print.error(`Invalid endpoint: "${endpoint}". Endpoint must start with 'http' or 'https' and must not contain a trailing slash.`); } const filePath = _path2.default.resolve(projectPath, 'bp-cloud.json'); if (_fs2.default.existsSync(filePath)) { return _util.print.error(`This bot is already paired with Botpress Cloud. If you believe this is an error, delete this file and try again: "${filePath}"`); } const packagePath = _path2.default.resolve(projectPath, 'package.json'); if (!_fs2.default.existsSync(packagePath)) { return _util.print.error(`This does not look like a valid project root. Please run this command at the root of your bot.`); } const { name, description } = require(packagePath); // eslint-disable-line const pairUrl = `${endpoint}/api/pairing`; try { const { data } = yield _axios2.default.post(pairUrl, { token, name, description }); const { botId, teamId } = data.payload; const content = { botId, teamId, token, endpoint }; _fs2.default.writeFileSync(filePath, JSON.stringify(content, null, 2), 'utf8'); } catch (err) { const message = _lodash2.default.get(err, 'response.data.message') || err.message || 'Unknown error'; return _util.print.error(`Failed to pair the bot: "${message}"`); } _util.print.success('Bot paired successfully'); }); return function (_x, _x2) { return _ref.apply(this, arguments); }; })(); //# sourceMappingURL=cloudPair.js.map