actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs
import { getFileStreamAndMetadata } from "@pipedream/platform"; import FormData from "form-data"; import jira from "../../jira.app.mjs"; export default { key: "jira-add-multiple-attachments-to-issue", name: "Add Multiple Attachments To Issue", description: "Adds multiple attachments to an issue, [See the docs](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-attachments/#api-rest-api-3-issue-issueidorkey-attachments-post)", version: "1.0.5", annotations: { destructiveHint: false, openWorldHint: true, readOnlyHint: false, }, type: "action", props: { jira, cloudId: { propDefinition: [ jira, "cloudId", ], }, issueIdOrKey: { propDefinition: [ jira, "issueIdOrKey", (c) => ({ cloudId: c.cloudId, }), ], }, files: { type: "string[]", label: "File Paths or URLs", description: "Provide either an array of file URLs or paths to files in the /tmp directory (for example, /tmp/myFile.pdf).", }, syncDir: { type: "dir", accessMode: "read", sync: true, optional: true, }, }, async run({ $ }) { const responses = []; for (let i = 0; i < this.files.length; i++) { const file = this.files[i]; const data = new FormData(); const { stream, metadata, } = await getFileStreamAndMetadata(file); data.append("file", stream, { contentType: metadata.contentType, knownLength: metadata.size, filename: metadata.name, }); const headers = { "Content-Type": `multipart/form-data; boundary=${data._boundary}`, "X-Atlassian-Token": "no-check", }; const response = await this.jira.addAttachmentToIssue({ $, cloudId: this.cloudId, issueIdOrKey: this.issueIdOrKey, headers, data, }); responses.push(response); } $.export("$summary", `Attachment/s were added to the issue with ID (or key): ${this.issueIdOrKey}`); return responses; }, };