From 64755695a1ac4e0e5f67192e728c9948841d8943 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Mon, 26 Feb 2024 18:47:35 +0300 Subject: [PATCH] feat(dropbox): add create text file action --- .../dropbox/actions/create-text-file/index.js | 82 +++++++++++++++++++ .../backend/src/apps/dropbox/actions/index.js | 3 +- .../apps/dropbox/common/add-auth-header.js | 4 +- packages/docs/pages/apps/dropbox/actions.md | 2 + 4 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 packages/backend/src/apps/dropbox/actions/create-text-file/index.js diff --git a/packages/backend/src/apps/dropbox/actions/create-text-file/index.js b/packages/backend/src/apps/dropbox/actions/create-text-file/index.js new file mode 100644 index 00000000..42d4dd38 --- /dev/null +++ b/packages/backend/src/apps/dropbox/actions/create-text-file/index.js @@ -0,0 +1,82 @@ +import path from 'node:path'; +import defineAction from '../../../../helpers/define-action.js'; + +export default defineAction({ + name: 'Create a text file', + key: 'createTextFile', + description: 'Create a new text file from plain text content you specify.', + arguments: [ + { + label: 'Folder', + key: 'parentFolder', + type: 'string', + required: true, + description: + 'Enter the folder path that file will be saved, like /TextFiles/ or /Documents/Taxes/', + variables: true, + }, + { + label: 'Folder Name', + key: 'folderName', + type: 'string', + required: true, + description: + "Enter the name for the new file. The file extension will be '.txt'.", + variables: true, + }, + { + label: 'File Content', + key: 'fileContent', + type: 'string', + required: true, + description: 'Plain text content to insert into the new text file.', + variables: true, + }, + { + label: 'Overwrite', + key: 'overwrite', + type: 'dropdown', + required: true, + description: + 'Overwrite this file (if one of the same name exists) or not.', + variables: true, + options: [ + { label: 'False', value: false }, + { label: 'True', value: true }, + ], + }, + ], + + async run($) { + const fileContent = $.step.parameters.fileContent; + const overwrite = $.step.parameters.overwrite; + const parentFolder = $.step.parameters.parentFolder; + const folderName = $.step.parameters.folderName; + const folderPath = path.join(parentFolder, folderName); + + const headers = { + Authorization: `Bearer ${$.auth.data.accessToken}`, + 'Content-Type': 'application/octet-stream', + 'Dropbox-API-Arg': JSON.stringify({ + autorename: false, + mode: overwrite ? 'overwrite' : 'add', + mute: false, + path: `${folderPath}.txt`, + strict_conflict: false, + }), + }; + + const response = await $.http.post( + 'https://content.dropboxapi.com/2/files/upload', + fileContent, + { + headers, + additionalProperties: { + skipAddingAuthHeader: true, + }, + } + ); + + $.setActionItem({ raw: response.data }); + }, +}); diff --git a/packages/backend/src/apps/dropbox/actions/index.js b/packages/backend/src/apps/dropbox/actions/index.js index c0b1917b..4ae00e65 100644 --- a/packages/backend/src/apps/dropbox/actions/index.js +++ b/packages/backend/src/apps/dropbox/actions/index.js @@ -1,4 +1,5 @@ import createFolder from './create-folder/index.js'; +import createTextFile from './create-text-file/index.js'; import renameFile from './rename-file/index.js'; -export default [createFolder, renameFile]; +export default [createFolder, createTextFile, renameFile]; diff --git a/packages/backend/src/apps/dropbox/common/add-auth-header.js b/packages/backend/src/apps/dropbox/common/add-auth-header.js index 1030633b..d9001ff2 100644 --- a/packages/backend/src/apps/dropbox/common/add-auth-header.js +++ b/packages/backend/src/apps/dropbox/common/add-auth-header.js @@ -1,10 +1,10 @@ const addAuthHeader = ($, requestConfig) => { - requestConfig.headers['Content-Type'] = 'application/json'; - if ( !requestConfig.additionalProperties?.skipAddingAuthHeader && $.auth.data?.accessToken ) { + requestConfig.headers['Content-Type'] = 'application/json'; + requestConfig.headers.Authorization = `Bearer ${$.auth.data.accessToken}`; } diff --git a/packages/docs/pages/apps/dropbox/actions.md b/packages/docs/pages/apps/dropbox/actions.md index 4d5d4b3e..3f5370c5 100644 --- a/packages/docs/pages/apps/dropbox/actions.md +++ b/packages/docs/pages/apps/dropbox/actions.md @@ -3,6 +3,8 @@ favicon: /favicons/dropbox.svg items: - name: Create a folder desc: Creates a new folder with the given parent folder and folder name. + - name: Create a text file + desc: Create a new text file from plain text content you specify. - name: Rename a file desc: Rename a file with the given file path and new name. ---