UNPKG

@skriptfabrik/n8n-nodes-moco

Version:
106 lines 3.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createUTCStringFromNodeParameter = createUTCStringFromNodeParameter; exports.createParametersFromNodeParameter = createParametersFromNodeParameter; exports.mocoApiRequest = mocoApiRequest; exports.mocoApiRequestAllItems = mocoApiRequestAllItems; const luxon_1 = require("luxon"); const n8n_workflow_1 = require("n8n-workflow"); function createUTCStringFromNodeParameter(parameterName, itemIndex) { const dateTimeParam = this.getNodeParameter(parameterName, itemIndex); if (dateTimeParam === '') { return undefined; } const dateTime = luxon_1.DateTime.fromISO(dateTimeParam, { zone: this.getTimezone(), }); if (!dateTime.isValid) { return undefined; } return dateTime.toUTC().toISO({ suppressMilliseconds: true, }); } function createParametersFromNodeParameter(parameterName, itemIndex, fields) { const additionalFieldsData = this.getNodeParameter(parameterName, itemIndex); const returnData = {}; for (const field of fields) { if (additionalFieldsData[field] === undefined || additionalFieldsData[field] === '') { continue; } const name = field.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`); returnData[name] = additionalFieldsData[field]; if (typeof returnData[name] === 'boolean') { returnData[name] = Boolean(returnData[name]).toString(); } } return returnData; } async function mocoApiRequest(itemIndex, method, url, options) { const credentials = (await this.getCredentials('mocoApi', itemIndex)); const { impersonateUserId, body, qs } = options || {}; const requestOptions = { url, baseURL: `https://${credentials.subDomain}.mocoapp.com/api/v1`, headers: { accept: 'application/json', ...(body ? { 'content-type': 'application/json' } : {}), ...(impersonateUserId ? { 'x-impersonate-user-id': impersonateUserId } : {}), }, method, body, qs, returnFullResponse: true, ignoreHttpStatusErrors: true, json: true, }; let response; const retries = 5; let remainingRetries = retries; do { response = await this.helpers.httpRequestWithAuthentication.call(this, 'mocoApi', requestOptions); if (response.statusCode === 429) { await (0, n8n_workflow_1.sleep)(Math.pow(2, retries - remainingRetries) * 1000); remainingRetries = remainingRetries - 1; } else { remainingRetries = 0; } } while (remainingRetries > 0); if (response.statusCode >= 400) { throw new n8n_workflow_1.NodeApiError(this.getNode(), {}, { message: response.statusMessage, description: JSON.stringify(response.body), httpCode: response.statusCode.toString(), itemIndex, }); } return response.body; } async function mocoApiRequestAllItems(itemIndex, method, url, options) { const returnData = []; const qs = (options === null || options === void 0 ? void 0 : options.qs) || {}; const { limit } = qs; let responseData; qs['page'] = 1; delete qs['limit']; do { responseData = await (mocoApiRequest).call(this, itemIndex, method, url, { ...options, qs, }); if (!Array.isArray(responseData)) { break; } returnData.push(...responseData); if (limit !== undefined && returnData.length >= limit) { return returnData.splice(0, limit); } qs['page']++; } while (responseData.length > 0); return returnData; } //# sourceMappingURL=GenericFunctions.js.map