create-new-text-file.ts•2.65 kB
import { createAction, Property } from '@activepieces/pieces-framework';
import {
HttpRequest,
HttpMethod,
AuthenticationType,
httpClient,
} from '@activepieces/pieces-common';
import { dropboxAuth } from '../../';
export const dropboxCreateNewTextFile = createAction({
auth: dropboxAuth,
name: 'create_new_dropbox_text_file',
description: 'Create a new text file from text input',
displayName: 'Create New Text File',
props: {
path: Property.ShortText({
displayName: 'Path',
description: 'The path of the new folder e.g. /Homework/math',
required: true,
}),
text: Property.LongText({
displayName: 'Text',
description: 'The text to write into the file.',
required: true,
}),
autorename: Property.Checkbox({
displayName: 'Autorename',
description:
"If there's a conflict, have the Dropbox server try to autorename the folder to avoid the conflict. The default for this field is False.",
required: false,
}),
mute: Property.Checkbox({
displayName: 'Mute',
description:
"Normally, users are made aware of any file modifications in their Dropbox account via notifications in the client software. If true, this tells the clients that this modification shouldn't result in a user notification.",
required: false,
}),
strict_conflict: Property.Checkbox({
displayName: 'Strict conflict',
description:
'Be more strict about how each WriteMode detects conflict. For example, always return a conflict error when mode = WriteMode.update and the given "rev" doesn\'t match the existing file\'s "rev", even if the existing file has been deleted.',
required: false,
}),
},
async run(context) {
const params = {
autorename: context.propsValue.autorename,
path: context.propsValue.path,
mode: 'add',
mute: context.propsValue.mute,
strict_conflict: context.propsValue.strict_conflict,
};
const request: HttpRequest = {
method: HttpMethod.POST,
url: `https://content.dropboxapi.com/2/files/upload`,
body: Buffer.from(context.propsValue.text, 'utf-8'),
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: context.auth.access_token,
},
headers: {
'Dropbox-API-Arg': JSON.stringify(params),
'Content-Type': 'application/octet-stream',
},
};
const result = await httpClient.sendRequest(request);
console.debug('Folder creation response', result);
if (result.status == 200) {
return result.body;
} else {
return result;
}
},
});