@traien/n8n-nodes-espocrm
Version:
n8n integration with EspoCRM
87 lines • 3.63 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.espoApiRequest = espoApiRequest;
exports.espoApiRequestAllItems = espoApiRequestAllItems;
const n8n_workflow_1 = require("n8n-workflow");
const crypto = __importStar(require("crypto"));
async function espoApiRequest(method, endpoint, body = {}, qs = {}, uri, headers = {}) {
const credentials = await this.getCredentials('espoCRMApi');
const options = {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
...headers,
},
method,
body: Object.keys(body).length === 0 ? undefined : body,
url: endpoint,
qs,
};
if (credentials.authType === 'hmac' && credentials.secretKey) {
const hmacString = method + ' ' + endpoint;
const hmac = crypto.createHmac('sha256', credentials.secretKey);
hmac.update(hmacString);
const signature = hmac.digest('base64');
const authPart = Buffer.from(credentials.apiKey + ':').toString('base64') + signature;
options.headers['X-Hmac-Authorization'] = authPart;
}
else {
options.headers['X-Api-Key'] = credentials.apiKey;
}
if (method === 'GET' && Object.keys(qs).length > 0) {
options.qs = { searchParams: JSON.stringify(qs) };
}
try {
return await this.helpers.httpRequest({
baseURL: `${credentials.baseUrl}/api/v1`,
...options,
});
}
catch (error) {
if (error.response && error.response.body) {
const errorMessage = error.response.body.message || error.message;
const statusCode = error.statusCode;
const statusReason = error.response.headers && error.response.headers['x-status-reason'] || '';
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `EspoCRM API error: ${errorMessage}. Status: ${statusCode}${statusReason ? `. Reason: ${statusReason}` : ''}`);
}
throw error;
}
}
async function espoApiRequestAllItems(method, endpoint, body = {}, qs = {}) {
const returnData = [];
let responseData;
qs.maxSize = 100;
qs.offset = 0;
do {
responseData = await espoApiRequest.call(this, method, endpoint, body, qs);
returnData.push.apply(returnData, responseData.list);
qs.offset = returnData.length;
} while (responseData.total !== undefined &&
responseData.list.length > 0 &&
returnData.length < responseData.total);
return returnData;
}
//# sourceMappingURL=GenericFunctions.js.map