From 51e96b832d27439b16bb199c73a23d560d92eed0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Mon, 26 Feb 2024 16:36:26 +0300 Subject: [PATCH] feat(dropbox): add new folders trigger --- packages/backend/src/apps/dropbox/index.js | 2 + .../src/apps/dropbox/triggers/index.js | 3 + .../dropbox/triggers/new-folders/index.js | 61 +++++++++++++++++++ packages/docs/pages/.vitepress/config.js | 3 +- packages/docs/pages/apps/dropbox/triggers.md | 12 ++++ 5 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 packages/backend/src/apps/dropbox/triggers/index.js create mode 100644 packages/backend/src/apps/dropbox/triggers/new-folders/index.js create mode 100644 packages/docs/pages/apps/dropbox/triggers.md diff --git a/packages/backend/src/apps/dropbox/index.js b/packages/backend/src/apps/dropbox/index.js index 6a0e4729..ff5b8cee 100644 --- a/packages/backend/src/apps/dropbox/index.js +++ b/packages/backend/src/apps/dropbox/index.js @@ -2,6 +2,7 @@ import defineApp from '../../helpers/define-app.js'; import addAuthHeader from './common/add-auth-header.js'; import auth from './auth/index.js'; import actions from './actions/index.js'; +import triggers from './triggers/index.js'; export default defineApp({ name: 'Dropbox', @@ -15,4 +16,5 @@ export default defineApp({ beforeRequest: [addAuthHeader], auth, actions, + triggers, }); diff --git a/packages/backend/src/apps/dropbox/triggers/index.js b/packages/backend/src/apps/dropbox/triggers/index.js new file mode 100644 index 00000000..dbc26ac7 --- /dev/null +++ b/packages/backend/src/apps/dropbox/triggers/index.js @@ -0,0 +1,3 @@ +import newFolders from './new-folders/index.js'; + +export default [newFolders]; diff --git a/packages/backend/src/apps/dropbox/triggers/new-folders/index.js b/packages/backend/src/apps/dropbox/triggers/new-folders/index.js new file mode 100644 index 00000000..4c90d49a --- /dev/null +++ b/packages/backend/src/apps/dropbox/triggers/new-folders/index.js @@ -0,0 +1,61 @@ +import defineTrigger from '../../../../helpers/define-trigger.js'; + +export default defineTrigger({ + name: 'New folders', + key: 'newFolders', + pollInterval: 15, + description: + 'Triggers when any new folder is added. 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, + }, + ], + + 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: true, + 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'] === 'folder') { + $.pushTriggerItem({ + raw: entry, + meta: { + internalId: entry.id, + }, + }); + } + } + } + } while (next); + }, +}); diff --git a/packages/docs/pages/.vitepress/config.js b/packages/docs/pages/.vitepress/config.js index 04d3fdcf..ed676e21 100644 --- a/packages/docs/pages/.vitepress/config.js +++ b/packages/docs/pages/.vitepress/config.js @@ -73,6 +73,7 @@ export default defineConfig({ collapsible: true, collapsed: true, items: [ + { text: 'Triggers', link: '/apps/dropbox/triggers' }, { text: 'Actions', link: '/apps/dropbox/actions' }, { text: 'Connection', link: '/apps/dropbox/connection' }, ], @@ -305,7 +306,7 @@ export default defineConfig({ collapsed: true, items: [ { text: 'Actions', link: '/apps/removebg/actions' }, - { text: 'Connection', link: '/apps/removebg/connection' } + { text: 'Connection', link: '/apps/removebg/connection' }, ], }, { diff --git a/packages/docs/pages/apps/dropbox/triggers.md b/packages/docs/pages/apps/dropbox/triggers.md new file mode 100644 index 00000000..e50dd632 --- /dev/null +++ b/packages/docs/pages/apps/dropbox/triggers.md @@ -0,0 +1,12 @@ +--- +favicon: /favicons/dropbox.svg +items: + - 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. +--- + + + +