UNPKG

vtiger

Version:
180 lines 5.81 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Connection = void 0; const request = require("request-promise"); const crypto_js_1 = require("crypto-js"); class Connection { constructor(url, username, access_key, on_failure = null) { this.url = url; this.username = username; this.access_key = access_key; this.on_failure = on_failure; } login() { return __awaiter(this, void 0, void 0, function* () { const challengeToken = (yield this.getChallenge()).token; let challenge = crypto_js_1.MD5(challengeToken + this.access_key).toString(); const result = yield this._post({ operation: 'login', username: this.username, accessKey: challenge }); this.session = result.sessionName; this.userId = result.userId; return result; }); } getChallenge() { return this._get({ operation: 'getchallenge', username: this.username, }); } update(element) { return this._post({ operation: 'update', sessionName: this.session, element: JSON.stringify(element), }); } delete(id) { return this._post({ operation: 'delete', sessionName: this.session, id: id }); } create(moduleName, element) { element.assigned_user_id = element.assigned_user_id || this.userId; return this._post({ operation: 'create', sessionName: this.session, element: JSON.stringify(element), elementType: moduleName, }); } retrieve(id) { return this._get({ operation: 'retrieve', sessionName: this.session, id: id, }); } query(query) { return this._get({ operation: 'query', sessionName: this.session, query: query }); } logout() { return this._post({ operation: 'logout', sessionName: this.session }); } listTypes() { return this._get({ operation: 'listtypes', sessionName: this.session }); } describe(elementType) { return this._get({ operation: 'describe', sessionName: this.session, elementType: elementType }); } retrieveRelated(id, relatedLabel, relatedType) { return this._get({ operation: 'retrieve_related', sessionName: this.session, id: id, relatedLabel: relatedLabel, relatedType: relatedType }); } relatedTypes(elementType) { return this._get({ operation: 'relatedtypes', sessionName: this.session, elementType: elementType }); } queryRelated(moduleName, id, relatedLabel) { return this._get({ operation: 'query_related', sessionName: this.session, query: `SELECT * FROM ${moduleName}`, id: id, relatedLabel: relatedLabel }); } deleteRelated(sourceId, relatedId) { return this._post({ operation: 'delete_related', sessionName: this.session, sourceRecordId: sourceId, relatedRecordId: relatedId, }); } addRelated(sourceRecordId, relatedRecordId, relationIdLabel) { return this._post({ operation: 'add_related', sessionName: this.session, sourceRecordId: sourceRecordId, relatedRecordId: relatedRecordId, relationIdLabel: relationIdLabel }); } _post(params) { return __awaiter(this, void 0, void 0, function* () { const res = yield request.post({ uri: this.url + '/webservice.php', json: true, formData: params, }); if (!res.success) { if (!!this.on_failure) { return this.on_failure(res, params); } else { console.error(res.error.message); throw Error(res.error.code); } } return res.result; }); } _get(params) { return __awaiter(this, void 0, void 0, function* () { const res = yield request.get({ uri: this.url + '/webservice.php ', qs: params, json: true, }); if (!res.success) { if (!!this.on_failure) { return this.on_failure(res, params); } else { console.error(res.error.message); throw Error(res.error.code); } } return res.result; }); } } exports.Connection = Connection; //# sourceMappingURL=index.js.map