Compare commits
	
		
			2 Commits
		
	
	
		
			dependabot
			...
			AUT-786
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 64755695a1 | ||
|   | 51e96b832d | 
| @@ -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 }); | ||||
|   }, | ||||
| }); | ||||
| @@ -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]; | ||||
|   | ||||
| @@ -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}`; | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -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, | ||||
| }); | ||||
|   | ||||
							
								
								
									
										3
									
								
								packages/backend/src/apps/dropbox/triggers/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								packages/backend/src/apps/dropbox/triggers/index.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| import newFolders from './new-folders/index.js'; | ||||
|  | ||||
| export default [newFolders]; | ||||
| @@ -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); | ||||
|   }, | ||||
| }); | ||||
| @@ -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' }, | ||||
|           ], | ||||
|         }, | ||||
|         { | ||||
|   | ||||
| @@ -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. | ||||
| --- | ||||
|   | ||||
							
								
								
									
										12
									
								
								packages/docs/pages/apps/dropbox/triggers.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								packages/docs/pages/apps/dropbox/triggers.md
									
									
									
									
									
										Normal file
									
								
							| @@ -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. | ||||
| --- | ||||
|  | ||||
| <script setup> | ||||
|   import CustomListing from '../../components/CustomListing.vue' | ||||
| </script> | ||||
|  | ||||
| <CustomListing /> | ||||
		Reference in New Issue
	
	Block a user