UNPKG

n8n-nodes-redmine

Version:
151 lines 5.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeIssueOperation = executeIssueOperation; const n8n_workflow_1 = require("n8n-workflow"); async function executeIssueOperation(params) { const { operation, i, baseUrl, apiKey } = params; let endpoint = ''; let method = 'GET'; let body = {}; let qs = {}; if (operation === 'get') { const issueId = this.getNodeParameter('issueId', i); method = 'GET'; endpoint = `/issues/${issueId}.json`; } else if (operation === 'getAll') { const returnAll = this.getNodeParameter('returnAll', i); const filters = this.getNodeParameter('filters', i); method = 'GET'; endpoint = '/issues.json'; if (filters.project_id) qs.project_id = filters.project_id; if (filters.status_id) qs.status_id = filters.status_id; if (filters.tracker_id) qs.tracker_id = filters.tracker_id; if (filters.assigned_to_id) qs.assigned_to_id = filters.assigned_to_id; if (!returnAll) { const limit = this.getNodeParameter('limit', i); qs.limit = limit; } } else if (operation === 'create') { const projectId = this.getNodeParameter('projectId', i); const subject = this.getNodeParameter('subject', i); const additionalFields = this.getNodeParameter('additionalFields', i); method = 'POST'; endpoint = '/issues.json'; const issueData = { project_id: projectId, subject, }; if (additionalFields.description) issueData.description = additionalFields.description; if (additionalFields.status_id) issueData.status_id = additionalFields.status_id; if (additionalFields.tracker_id) issueData.tracker_id = additionalFields.tracker_id; if (additionalFields.priority_id) issueData.priority_id = additionalFields.priority_id; if (additionalFields.assigned_to_id) issueData.assigned_to_id = additionalFields.assigned_to_id; if (additionalFields.parent_issue_id) issueData.parent_issue_id = additionalFields.parent_issue_id; if (additionalFields.start_date) issueData.start_date = additionalFields.start_date; if (additionalFields.due_date) issueData.due_date = additionalFields.due_date; if (additionalFields.estimated_hours) issueData.estimated_hours = additionalFields.estimated_hours; if (additionalFields.customFields && additionalFields.customFields.field) { const customFields = []; for (const customField of additionalFields.customFields.field) { customFields.push({ id: customField.id, value: customField.value, }); } if (customFields.length > 0) { issueData.custom_fields = customFields; } } body = { issue: issueData, }; } else if (operation === 'update') { const issueId = this.getNodeParameter('issueId', i); const additionalFields = this.getNodeParameter('additionalFields', i); method = 'PUT'; endpoint = `/issues/${issueId}.json`; const issueData = {}; if (additionalFields.description) issueData.description = additionalFields.description; if (additionalFields.status_id) issueData.status_id = additionalFields.status_id; if (additionalFields.tracker_id) issueData.tracker_id = additionalFields.tracker_id; if (additionalFields.priority_id) issueData.priority_id = additionalFields.priority_id; if (additionalFields.assigned_to_id) issueData.assigned_to_id = additionalFields.assigned_to_id; if (additionalFields.parent_issue_id) issueData.parent_issue_id = additionalFields.parent_issue_id; if (additionalFields.start_date) issueData.start_date = additionalFields.start_date; if (additionalFields.due_date) issueData.due_date = additionalFields.due_date; if (additionalFields.estimated_hours) issueData.estimated_hours = additionalFields.estimated_hours; if (additionalFields.customFields && additionalFields.customFields.field) { const customFields = []; for (const customField of additionalFields.customFields.field) { customFields.push({ id: customField.id, value: customField.value, }); } if (customFields.length > 0) { issueData.custom_fields = customFields; } } body = { issue: issueData, }; } else if (operation === 'delete') { const issueId = this.getNodeParameter('issueId', i); method = 'DELETE'; endpoint = `/issues/${issueId}.json`; } const options = { method, body, qs, uri: `${baseUrl}/` + endpoint.replace(/^\//, ''), headers: { 'X-Redmine-API-Key': apiKey, 'Content-Type': 'application/json', }, json: true, }; if (Object.keys(body).length === 0) { delete options.body; } let responseData; try { responseData = await this.helpers.request(options); } catch (error) { throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Redmine API error: ${error.message}`, { itemIndex: i }); } return { json: responseData, pairedItem: { item: i, }, }; } //# sourceMappingURL=IssueExecute%20(copia).js.map