n8n
Version:
n8n Workflow Automation Tool
71 lines • 2.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.paginatedRequest = paginatedRequest;
exports.buildStrapiUpdateQuery = buildStrapiUpdateQuery;
const backend_common_1 = require("@n8n/backend-common");
const backend_network_1 = require("@n8n/backend-network");
const di_1 = require("@n8n/di");
const n8n_core_1 = require("n8n-core");
const REQUEST_TIMEOUT_MS = 6000;
function isV4WrappedEntity(item) {
return 'attributes' in item && item.attributes !== null && typeof item.attributes === 'object';
}
function flattenStrapiEntity(item) {
if (isV4WrappedEntity(item)) {
return { id: item.id, ...item.attributes };
}
const flattened = { ...item };
delete flattened.documentId;
return flattened;
}
async function paginatedRequest(url, params, options) {
let returnData = [];
let responseData = [];
do {
let response;
try {
response = await di_1.Container.get(backend_network_1.OutboundHttp)
.requests({
ssrf: 'disabled',
timeout: REQUEST_TIMEOUT_MS,
})
.request({
url,
method: 'GET',
headers: { 'Content-Type': 'application/json' },
qs: params,
json: true,
});
}
catch (error) {
di_1.Container.get(n8n_core_1.ErrorReporter).error(error, {
tags: { source: 'strapiPaginatedRequest' },
});
di_1.Container.get(backend_common_1.Logger).error(`Error fetching from Strapi API (${url}): ${error.message}`);
if (options?.throwOnError)
throw error;
break;
}
responseData = response?.data?.map(flattenStrapiEntity);
if (!responseData?.length)
break;
returnData = returnData.concat(responseData);
if (response?.meta?.pagination) {
const { page, pageCount } = response.meta.pagination;
if (page === pageCount)
break;
}
params.pagination.page++;
} while (responseData?.length);
return returnData;
}
function buildStrapiUpdateQuery(ids) {
return {
filters: {
id: {
$in: ids,
},
},
};
}
//# sourceMappingURL=strapi-utils.js.map