botpress
Version:
The world's first CMS for bots. Easily create, manage and extend chatbots.
82 lines (55 loc) • 3.01 kB
JavaScript
;
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