@slavmak2486/bx24ts
Version:
Library for bitrix24
156 lines (155 loc) • 6.57 kB
JavaScript
"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;