UNPKG

ringcentral-personal-chatbot

Version:
97 lines (77 loc) 2.88 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.tokenExpireTime = exports.pack = exports.loginUrl = exports.jwtPrefix = exports.extraPath = exports.defaultState = exports.createRc = exports.buildLoginUrlRedirect = void 0; var _path = require("path"); var _crypto = _interopRequireDefault(require("crypto")); var _core = _interopRequireDefault(require("@rc-ex/core")); var _retry = _interopRequireDefault(require("@rc-ex/retry")); var _authorizeUri = _interopRequireDefault(require("@rc-ex/authorize-uri")); // import RateLimitExtension from '@rc-ex/rate-limit' const { RINGCENTRAL_SERVER, RINGCENTRAL_CHATBOT_SERVER, RINGCENTRAL_CLIENT_ID, RINGCENTRAL_CLIENT_SECRET, SERVER_HOME } = process.env; const arr = RINGCENTRAL_CHATBOT_SERVER.split('/'); const root = arr[0] + arr[1] + arr[2]; const createRc = async () => { const rc = new _core.default({ server: RINGCENTRAL_SERVER, clientId: RINGCENTRAL_CLIENT_ID, clientSecret: RINGCENTRAL_CLIENT_SECRET }); const retryOptions = { shouldRetry: (restException, retriesAttempted) => { const { status } = restException.response; return retriesAttempted < 5 && ([429, 503].includes(status) || status > 503); }, retryInterval: (restException, retriesAttempted) => { const f = restException.response.status === 429 ? 60 : 1; return f * 1000 * Math.pow(2, retriesAttempted); } }; const retryExtension = new _retry.default(retryOptions); const authorizeUriExtension = new _authorizeUri.default(); await rc.installExtension(authorizeUriExtension); await rc.installExtension(retryExtension); rc.redirectUrl = RINGCENTRAL_CHATBOT_SERVER + '/rc/oauth'; rc.loginUrl = ({ state }) => { return authorizeUriExtension.buildUri({ state, redirect_uri: rc.redirectUrl }); }; return rc; }; exports.createRc = createRc; const defaultState = '__default_state_'; exports.defaultState = defaultState; const extraPath = RINGCENTRAL_CHATBOT_SERVER.replace(root, ''); exports.extraPath = extraPath; const pack = require((0, _path.resolve)(__dirname, '../../../package.json')); exports.pack = pack; const jwtPrefix = _crypto.default.createHash('md5').update(RINGCENTRAL_CHATBOT_SERVER).digest('hex'); exports.jwtPrefix = jwtPrefix; const loginUrl = async () => { const rc = await createRc(); return rc.loginUrl({ state: defaultState }); }; exports.loginUrl = loginUrl; const buildLoginUrlRedirect = async () => { const url = await loginUrl(); return url.replace(defaultState, encodeURIComponent(RINGCENTRAL_CHATBOT_SERVER + SERVER_HOME)); }; exports.buildLoginUrlRedirect = buildLoginUrlRedirect; const tokenExpireTime = 25 * 60 * 1000; exports.tokenExpireTime = tokenExpireTime;