n8n-nodes-orderful
Version:
N8N nodes for Orderful EDI platform integration
178 lines • 7.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OrderfulPoller = void 0;
const n8n_workflow_1 = require("n8n-workflow");
class OrderfulPoller {
constructor() {
this.description = {
displayName: 'Orderful Poller',
name: 'orderfulPoller',
icon: 'file:orderful.svg',
group: ['input'],
version: 1,
subtitle: '={{$parameter["operation"]}}',
description: 'Poll for new transactions from Orderful',
defaults: {
name: 'Orderful Poller',
},
inputs: ["main"],
outputs: ["main"],
credentials: [
{
name: 'orderfulApi',
required: true,
},
],
requestDefaults: {
baseURL: '={{$credentials.baseUrl}}',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
Authorization: 'Bearer {{$credentials.apiKey}}',
},
},
properties: [
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
options: [
{
name: 'Get Transactions',
value: 'getTransactions',
description: 'Get transactions from poller bucket',
action: 'Get transactions from poller bucket',
},
{
name: 'Remove Transactions',
value: 'removeTransactions',
description: 'Remove transactions from bucket',
action: 'Remove transactions from bucket',
},
],
default: 'getTransactions',
},
{
displayName: 'Bucket Name',
name: 'bucketName',
type: 'string',
default: 'default',
description: 'Name of the poller bucket',
required: true,
},
{
displayName: 'Additional Fields',
name: 'additionalFields',
type: 'collection',
placeholder: 'Add Field',
displayOptions: {
show: {
operation: ['getTransactions'],
},
},
default: {},
options: [
{
displayName: 'Limit',
name: 'limit',
type: 'number',
typeOptions: {
minValue: 1,
},
default: 50,
description: 'Max number of results to return',
},
{
displayName: 'Transaction Type',
name: 'transactionType',
type: 'string',
default: '',
description: 'Filter by transaction type (e.g., 850, 810)',
},
{
displayName: 'Partner ID',
name: 'partnerId',
type: 'string',
default: '',
description: 'Filter by trading partner ID',
},
],
},
{
displayName: 'Transaction IDs',
name: 'transactionIds',
type: 'string',
displayOptions: {
show: {
operation: ['removeTransactions'],
},
},
default: '',
description: 'Comma-separated list of transaction IDs to remove from bucket',
required: true,
},
],
};
}
async execute() {
const items = this.getInputData();
const returnData = [];
for (let i = 0; i < items.length; i++) {
try {
const operation = this.getNodeParameter('operation', i);
const bucketName = this.getNodeParameter('bucketName', i);
let responseData = {};
if (operation === 'getTransactions') {
const additionalFields = this.getNodeParameter('additionalFields', i);
const qs = {};
if (additionalFields.limit) {
qs.limit = additionalFields.limit;
}
if (additionalFields.transactionType) {
qs.type = additionalFields.transactionType;
}
if (additionalFields.partnerId) {
qs.partner_id = additionalFields.partnerId;
}
const options = {
method: 'GET',
url: `/poller/${bucketName}`,
qs,
json: true,
};
responseData = await this.helpers.requestWithAuthentication.call(this, 'orderfulApi', options);
}
else if (operation === 'removeTransactions') {
const transactionIds = this.getNodeParameter('transactionIds', i);
const idArray = transactionIds.split(',').map((id) => id.trim());
const body = {
transaction_ids: idArray,
};
const options = {
method: 'POST',
url: `/poller/${bucketName}/remove`,
body,
json: true,
};
responseData = await this.helpers.requestWithAuthentication.call(this, 'orderfulApi', options);
}
const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
returnData.push(...executionData);
}
catch (error) {
if (this.continueOnFail()) {
const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } });
returnData.push(...executionErrorData);
continue;
}
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, {
itemIndex: i,
});
}
}
return [returnData];
}
}
exports.OrderfulPoller = OrderfulPoller;
//# sourceMappingURL=OrderfulPoller.node.js.map