From e4078d661ee9cde0c1f24c31fc503953d75efbfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Tue, 27 Feb 2024 15:12:21 +0300 Subject: [PATCH] feat(dropbox): add new files in folder trigger --- .../src/apps/dropbox/triggers/index.js | 3 +- .../triggers/new-files-in-folder/index.js | 74 +++++++++++++++++++ packages/docs/pages/apps/dropbox/triggers.md | 2 + 3 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 packages/backend/src/apps/dropbox/triggers/new-files-in-folder/index.js diff --git a/packages/backend/src/apps/dropbox/triggers/index.js b/packages/backend/src/apps/dropbox/triggers/index.js index dbc26ac7..435b7f6d 100644 --- a/packages/backend/src/apps/dropbox/triggers/index.js +++ b/packages/backend/src/apps/dropbox/triggers/index.js @@ -1,3 +1,4 @@ +import newFilesInFolder from './new-files-in-folder/index.js'; import newFolders from './new-folders/index.js'; -export default [newFolders]; +export default [newFilesInFolder, newFolders]; diff --git a/packages/backend/src/apps/dropbox/triggers/new-files-in-folder/index.js b/packages/backend/src/apps/dropbox/triggers/new-files-in-folder/index.js new file mode 100644 index 00000000..df9d3e6d --- /dev/null +++ b/packages/backend/src/apps/dropbox/triggers/new-files-in-folder/index.js @@ -0,0 +1,74 @@ +import defineTrigger from '../../../../helpers/define-trigger.js'; + +export default defineTrigger({ + name: 'New files in folder', + key: 'newFilesInFolder', + pollInterval: 15, + description: + 'Triggers when a new file is added to a folder. Ensure that the number of files/folders within the monitored directory remains below 4000.', + arguments: [ + { + label: 'Folder', + key: 'folderPath', + type: 'string', + required: true, + description: + 'Enter the folder path that you want to follow, like /TextFiles or /Documents/Taxes.', + variables: true, + }, + { + label: 'Include File Contents?', + key: 'includeFileContents', + type: 'dropdown', + required: true, + description: + 'Please be advised that files exceeding 100MB in size may result in an error. To prevent errors and exclude file contents, set this option to NO.', + variables: true, + options: [ + { label: 'No', value: false }, + { label: 'Yes', value: true }, + ], + }, + ], + + async run($) { + const folderPath = $.step.parameters.folderPath; + let endpoint = '/2/files/list_folder'; + let next = false; + + const params = { + path: folderPath, + recursive: false, + include_deleted: false, + include_has_explicit_shared_members: false, + include_mounted_folders: false, + limit: 2000, + include_non_downloadable_files: true, + }; + + do { + const { data } = await $.http.post(endpoint, params); + + if (data.has_more) { + endpoint += '/continue'; + params.cursor = data.cursor; + next = data.has_more; + } else { + next = false; + } + + if (data.entries?.length) { + for (const entry of data.entries.reverse()) { + if (entry['.tag'] === 'file') { + $.pushTriggerItem({ + raw: entry, + meta: { + internalId: entry.id, + }, + }); + } + } + } + } while (next); + }, +}); diff --git a/packages/docs/pages/apps/dropbox/triggers.md b/packages/docs/pages/apps/dropbox/triggers.md index e50dd632..7abba0a8 100644 --- a/packages/docs/pages/apps/dropbox/triggers.md +++ b/packages/docs/pages/apps/dropbox/triggers.md @@ -1,6 +1,8 @@ --- favicon: /favicons/dropbox.svg items: + - name: New files in folder + desc: Triggers when a new file is added to a folder. Ensure that the number of files/folders within the monitored directory remains below 4000. - name: New folders desc: Triggers when any new folder is added. Ensure that the number of files/folders within the monitored directory remains below 4000. ---