@skriptfabrik/n8n-nodes-moco
Version:
MOCO community nodes for n8n
94 lines • 4.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createUTCStringFromNodeParameter = createUTCStringFromNodeParameter;
exports.createParametersFromNodeParameter = createParametersFromNodeParameter;
exports.mocoApiRequest = mocoApiRequest;
exports.mocoApiRequestAllItems = mocoApiRequestAllItems;
const tslib_1 = require("tslib");
const moment_timezone_1 = tslib_1.__importDefault(require("moment-timezone"));
const n8n_workflow_1 = require("n8n-workflow");
function createUTCStringFromNodeParameter(parameterName, itemIndex) {
const dateTime = this.getNodeParameter(parameterName, itemIndex);
if (dateTime === '') {
return undefined;
}
const timezone = this.getTimezone();
return moment_timezone_1.default.tz(dateTime, timezone).utc().format();
}
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;
}
function mocoApiRequest(itemIndex, method, url, options) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const credentials = (yield this.getCredentials('mocoApi', itemIndex));
const { impersonateUserId, body, qs } = options || {};
const requestOptions = {
url,
baseURL: `https://${credentials.subDomain}.mocoapp.com/api/v1`,
headers: Object.assign(Object.assign({ 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 = yield this.helpers.httpRequestWithAuthentication.call(this, 'mocoApi', requestOptions);
if (response.statusCode === 429) {
yield (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;
});
}
function mocoApiRequestAllItems(itemIndex, method, url, options) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
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 = (yield mocoApiRequest.call(this, itemIndex, method, url, Object.assign(Object.assign({}, options), { qs })));
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