n8n-nodes-redmine
Version:
Redmine node for n8n
151 lines • 5.87 kB
JavaScript
;
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