@skriptfabrik/n8n-nodes-moco
Version:
MOCO community nodes for n8n
106 lines • 3.86 kB
JavaScript
;
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