n8n-nodes-fatture-in-cloud
Version:
n8n community node for Fatture in Cloud integration using the official TypeScript SDK
101 lines • 5.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.WebhooksModule = void 0;
const n8n_workflow_1 = require("n8n-workflow");
const fattureincloud_ts_sdk_1 = require("@fattureincloud/fattureincloud-ts-sdk");
const WebhooksResource_1 = require("../resources/WebhooksResource");
class WebhooksModule {
constructor() {
this.resource = WebhooksResource_1.WebhooksResource;
}
async execute(context, operation, itemIndex) {
var _a;
const credentials = await context.getCredentials('fattureInCloudOAuth2Api');
let accessToken;
if ((_a = credentials.oauthTokenData) === null || _a === void 0 ? void 0 : _a.access_token) {
accessToken = credentials.oauthTokenData.access_token;
}
else if (credentials.access_token) {
accessToken = credentials.access_token;
}
else if (credentials.accessToken) {
accessToken = credentials.accessToken;
}
else {
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Access token not found in credentials. Please re-authenticate your Fatture in Cloud connection.', { itemIndex });
}
const config = new fattureincloud_ts_sdk_1.Configuration({
accessToken,
});
const webhooksApi = new fattureincloud_ts_sdk_1.WebhooksApi(config);
const companyId = context.getNodeParameter('companyId', itemIndex);
let responseData;
switch (operation) {
case 'create':
const sink = context.getNodeParameter('sink', itemIndex);
const verified = context.getNodeParameter('verified', itemIndex, false);
const types = context.getNodeParameter('types', itemIndex, ['created']);
if (!sink || sink.trim() === '') {
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Sink URL is required.', { itemIndex });
}
const webhookData = {
sink: sink.trim(),
verified,
types,
};
const createRequest = {
data: webhookData,
};
const createResponse = await webhooksApi.createWebhooksSubscription(companyId, createRequest);
responseData = createResponse.data;
break;
case 'get':
const subscriptionId = context.getNodeParameter('subscriptionId', itemIndex);
if (!subscriptionId) {
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Subscription ID is required.', { itemIndex });
}
const getResponse = await webhooksApi.getWebhooksSubscription(companyId, subscriptionId);
responseData = getResponse.data;
break;
case 'list':
const listResponse = await webhooksApi.listWebhooksSubscriptions(companyId);
responseData = listResponse.data;
break;
case 'update':
const updateSubscriptionId = context.getNodeParameter('subscriptionId', itemIndex);
const updateSink = context.getNodeParameter('sink', itemIndex);
const updateVerified = context.getNodeParameter('verified', itemIndex, false);
const updateTypes = context.getNodeParameter('types', itemIndex, ['created']);
if (!updateSubscriptionId) {
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Subscription ID is required.', { itemIndex });
}
if (!updateSink || updateSink.trim() === '') {
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Sink URL is required.', { itemIndex });
}
const updateWebhookData = {
sink: updateSink.trim(),
verified: updateVerified,
types: updateTypes,
};
const modifyRequest = {
data: updateWebhookData,
};
const updateResponse = await webhooksApi.modifyWebhooksSubscription(companyId, updateSubscriptionId, modifyRequest);
responseData = updateResponse.data;
break;
case 'delete':
const deleteSubscriptionId = context.getNodeParameter('subscriptionId', itemIndex);
if (!deleteSubscriptionId) {
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Subscription ID is required.', { itemIndex });
}
await webhooksApi.deleteWebhooksSubscription(companyId, deleteSubscriptionId);
responseData = { success: true, message: 'Webhook subscription deleted successfully' };
break;
default:
throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Unknown operation: ${operation}`, { itemIndex });
}
return responseData;
}
}
exports.WebhooksModule = WebhooksModule;
//# sourceMappingURL=WebhooksModule.js.map