UNPKG

@slavmak2486/bx24ts

Version:

Library for bitrix24

156 lines (155 loc) 6.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BX24Server = void 0; const BX24_1 = require("./base/BX24"); const callResult_1 = require("./callResult"); class BX24Server extends BX24_1.baseBX24 { constructor(param) { var _a; super(); this.logger = console; if (param.auth_connector) this.AUTH_CONNECTOR = param.auth_connector; if (param.logger) this.logger = param.logger; this.IS_ADMIN = param.isAdmin === false ? false : true; this.DOMAIN = param.domain; if (param.member_id) { this.MEMBER_ID = param.member_id; } this.AUTH_EXPIRES = (_a = param.expires_in) !== null && _a !== void 0 ? _a : 0; this.REFRESH_ID = param.refresh_token; this.PROTOCOL = 1; this.AUTH_ID = param.access_token; this.CLIENT_ID = param.client_id; this.CLIENT_SECRET = param.client_secret; this.isInit = true; } getOfflineEvents(debug = false, clear = true, authConnector = '') { return new Promise((resolve) => { try { if (debug) { this.callMethod('event.offline.list', { auth_connector: authConnector }, ress => { var _a; if (ress.error()) { const result = new callResult_1.CallResult({ error_description: String(ress.error()) }, { data: [debug ? { auth_connector: authConnector } : { clear: clear ? 1 : 0, auth_connector: authConnector }], method: debug ? 'event.offline.list' : 'event.offline.get' }, this, 500); resolve(result); } if (!ress.answer) ress.answer = {}; if (!ress.answer.result) ress.answer.result = {}; ress.answer.result = { events: this.formatEvents(((_a = ress === null || ress === void 0 ? void 0 : ress.answer) === null || _a === void 0 ? void 0 : _a.result) || []) }; resolve(ress); }); } else { this.callMethod('event.offline.get', { clear: clear ? 1 : 0, auth_connector: authConnector }, ress => { var _a, _b; if (ress.error()) { const result = new callResult_1.CallResult({ error_description: String(ress.error()) }, { data: [debug ? { auth_connector: authConnector } : { clear: clear ? 1 : 0, auth_connector: authConnector }], method: debug ? 'event.offline.list' : 'event.offline.get' }, this, 500); resolve(result); } if (!ress.answer) ress.answer = {}; if (!ress.answer.result) ress.answer.result = {}; ress.answer.result.events = this.formatEvents(((_b = (_a = ress === null || ress === void 0 ? void 0 : ress.answer) === null || _a === void 0 ? void 0 : _a.result) === null || _b === void 0 ? void 0 : _b.events) || []); resolve(ress); }); } } catch (err) { const result = new callResult_1.CallResult({ error_description: String(err) }, { data: [debug ? { auth_connector: authConnector } : { clear: clear ? 1 : 0, auth_connector: authConnector }], method: debug ? 'event.offline.list' : 'event.offline.get' }, this, 500); resolve(result); } }); } formatEvents(rawEvents) { const result = []; for (const idx in rawEvents) { const tempEvent = { ID: Number(rawEvents[idx].ID), TIMESTAMP_X: new Date(rawEvents[idx].TIMESTAMP_X), EVENT_NAME: rawEvents[idx].EVENT_NAME }; if (rawEvents[idx].EVENT_DATA) tempEvent.EVENT_DATA = rawEvents[idx].EVENT_DATA; if (rawEvents[idx].EVENT_ADDITIONAL) tempEvent.EVENT_ADDITIONAL = rawEvents[idx].EVENT_ADDITIONAL; if (rawEvents[idx].MESSAGE_ID) tempEvent.MESSAGE_ID = rawEvents[idx].MESSAGE_ID; if (rawEvents[idx].PROCESS_ID) tempEvent.PROCESS_ID = rawEvents[idx].PROCESS_ID; if (rawEvents[idx].ERROR) tempEvent.ERROR = Boolean(Number(rawEvents[idx].ERROR)); result.push(tempEvent); } return result; } runCallback(e) { this.logger.debug('callBack not allowed in server!', e); } onRefresh(cb) { this.addEvent('refreshAuth', cb); } refreshAuth(cb) { this.refreshAuthAsync() .then(newAuth => { if (cb) cb(newAuth); }) .catch(err => { if (cb) cb(err); }); } refreshAuthAsync() { return new Promise((resolve, reject) => { this.call("https://oauth.bitrix.info/oauth/token/", { method: 'refresh_token', data: { grant_type: 'refresh_token', client_id: this.CLIENT_ID, client_secret: this.CLIENT_SECRET, refresh_token: this.REFRESH_ID } }) .then(data => { this.AUTH_ID = data.answer.access_token; this.REFRESH_ID = data.answer.refresh_token; this.AUTH_EXPIRES = data.answer.expires * 1000; this.emitEvent('refreshAuth', this.getAuth()); const authArr = this.getAuth(); if (authArr === false) { reject('Refresh auth undefined error!'); } else { resolve(authArr); } }) .catch(err => { reject(err); }); }); } sendMessage(cmd, params, cb) { this.logger.log('sendMessage', { cmd: cmd, params: params, cb: cb }); if (cb) cb(); } } exports.BX24Server = BX24Server;