Skip to main content
Glama
combine-files.ts2.43 kB
import { createAction, Property } from '@activepieces/pieces-framework'; import { HttpMethod } from '@activepieces/pieces-common'; import { documergeAuth } from '../common/auth'; import { DocuMergeClient } from '../common/client'; export const combineFiles = createAction({ auth: documergeAuth, name: 'combine_files', displayName: 'Combine Files', description: 'Combine multiple files into a single PDF or DOCX', props: { output: Property.StaticDropdown({ displayName: 'Output Format', description: 'The format of the combined file', required: true, options: { options: [ { label: 'PDF', value: 'pdf' }, { label: 'DOCX', value: 'docx' }, ], }, }), files: Property.Array({ displayName: 'Files', description: 'Array of file identifiers to combine', required: true, }), name: Property.ShortText({ displayName: 'Name', description: 'Name for the combined file', required: false, }), url: Property.ShortText({ displayName: 'URL', description: 'URL of a file to include (must be a valid URL)', required: false, }), contents: Property.LongText({ displayName: 'Contents', description: 'Additional content to include', required: false, }), }, async run(context) { const { output, files, name, url, contents } = context.propsValue; if (!files || files.length === 0) { throw new Error('At least one file is required'); } const client = new DocuMergeClient(context.auth.secret_text); const body: Record<string, unknown> = { output, files: files.filter((f): f is string => typeof f === 'string'), }; if (name) { body['name'] = name; } if (url) { body['url'] = url; } if (contents) { body['contents'] = contents; } const fileData = await client.makeBinaryRequest( HttpMethod.POST, '/api/tools/combine', body ); const fileExtension = output === 'pdf' ? 'pdf' : 'docx'; const fileName = name ? `${name}.${fileExtension}` : `combined_file_${Date.now()}.${fileExtension}`; const fileUrl = await context.files.write({ fileName, data: Buffer.from(fileData), }); return { success: true, fileName, fileUrl, format: output, size: fileData.byteLength, }; }, });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/activepieces/activepieces'

If you have feedback or need assistance with the MCP directory API, please join our Discord server