ringcentral-personal-chatbot
Version:
RingCentral personal chatbot framework
88 lines (68 loc) • 2.5 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.jwtAuth = exports.initApp = void 0;
var _express = _interopRequireDefault(require("express"));
var _bodyParser = _interopRequireDefault(require("body-parser"));
var _viewIndex = _interopRequireDefault(require("./routes/view-index"));
var _webhook = _interopRequireDefault(require("./routes/webhook"));
var _admin = require("./routes/admin");
var _oauth = _interopRequireDefault(require("./routes/oauth"));
var _logout = _interopRequireDefault(require("./routes/logout"));
var _api = _interopRequireDefault(require("./routes/api"));
var _morgan = _interopRequireDefault(require("morgan"));
var _path = require("path");
var _expressBasicAuth = _interopRequireDefault(require("express-basic-auth"));
var _jwt = require("./common/jwt");
const jwtAuth = (0, _jwt.jwtCreate)('rcp');
exports.jwtAuth = jwtAuth;
const {
RINGCENTRAL_CHATBOT_ADMIN_USERNAME,
RINGCENTRAL_CHATBOT_ADMIN_PASSWORD,
SERVER_HOME = '/'
} = process.env;
const auth = (0, _expressBasicAuth.default)({
users: {
[RINGCENTRAL_CHATBOT_ADMIN_USERNAME]: RINGCENTRAL_CHATBOT_ADMIN_PASSWORD
}
});
const app = (0, _express.default)();
const staticPath = (0, _path.resolve)(__dirname, '../../dist/static');
app.use(_express.default.static(staticPath));
app.use((0, _morgan.default)('tiny'));
app.use(_bodyParser.default.urlencoded({
extended: false
}));
app.use(_bodyParser.default.json());
app.set('views', (0, _path.resolve)(__dirname, 'views'));
app.set('view engine', 'pug');
app.get('/logout', _logout.default);
app.get('/test', (req, res) => res.send('server running'));
app.get('/rc/oauth', _oauth.default);
app.use(function (err, req, res, next) {
if (err.name === 'UnauthorizedError') {
res.status(401).send('invalid token...');
} else {
next();
}
});
app.post('/api/action', jwtAuth, _jwt.errHandler, _api.default);
app.put('/admin/setup-database', auth, _admin.initDb);
app.get('/admin/view-database', auth, _admin.viewDb);
app.put('/admin/renew', auth, _admin.renewToken);
const initApp = conf => {
app.get(SERVER_HOME, (0, _viewIndex.default)(conf));
app.post('/rc/webhook', (0, _webhook.default)(conf));
for (const skill of conf.skills) {
if (skill.appExtend) {
skill.appExtend(app);
}
}
if (conf.appExtend) {
conf.appExtend(app);
}
return app;
};
exports.initApp = initApp;