Skip to content

Commit

Permalink
fix(Google Drive Node): Create from text operation (n8n-io#9185)
Browse files Browse the repository at this point in the history
  • Loading branch information
michael-radency authored Apr 24, 2024
1 parent 1efeecc commit d9e7494
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jest.mock('../../../../v2/transport', () => {
return {
...originalModule,
googleApiRequest: jest.fn(async function () {
return {};
return { id: 42 };
}),
};
});
Expand Down Expand Up @@ -69,23 +69,34 @@ describe('test GoogleDriveV2: file createFromText', () => {

await createFromText.execute.call(fakeExecuteFunction, 0);

expect(transport.googleApiRequest).toBeCalledTimes(1);
expect(transport.googleApiRequest).toBeCalledTimes(2);
expect(transport.googleApiRequest).toHaveBeenCalledWith(
'POST',
'/upload/drive/v3/files',
'\n\t\t\n--XXXXXX\t\t\nContent-Type: application/json; charset=UTF-8\t\t\n\n{"name":"helloDrive.txt","parents":["folderIDxxxxxx"],"mimeType":"text/plain","properties":{"prop1":"value1","prop2":"value2"},"appProperties":{"appKey1":"appValue1"}}\t\t\n--XXXXXX\t\t\nContent-Type: text/plain\t\t\nContent-Transfer-Encoding: base64\t\t\n\nhello drive!\t\t\n--XXXXXX--',
expect.anything(), // Buffer of content goes here
{ uploadType: 'media' },
undefined,
{ headers: { 'Content-Length': 12, 'Content-Type': 'text/plain' } },
);
expect(transport.googleApiRequest).toHaveBeenCalledWith(
'PATCH',
'/drive/v3/files/42',
{
appProperties: { appKey1: 'appValue1' },
mimeType: 'text/plain',
name: 'helloDrive.txt',
properties: { prop1: 'value1', prop2: 'value2' },
},
{
addParents: 'folderIDxxxxxx',
corpora: 'allDrives',
includeItemsFromAllDrives: true,
keepRevisionForever: true,
ocrLanguage: 'en',
spaces: 'appDataFolder, drive',
supportsAllDrives: true,
uploadType: 'multipart',
useContentAsIndexableText: true,
},
undefined,
{ headers: { 'Content-Length': 12, 'Content-Type': 'multipart/related; boundary=XXXXXX' } },
);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,6 @@ export async function execute(this: IExecuteFunctions, i: number): Promise<INode
options,
);

const boundary = 'XXXXXX';

const qs = setUpdateCommonParams(
{
includeItemsFromAllDrives: true,
Expand Down Expand Up @@ -147,34 +145,36 @@ export async function execute(this: IExecuteFunctions, i: number): Promise<INode
const content = Buffer.from(this.getNodeParameter('content', i, '') as string, 'utf8');
const contentLength = content.byteLength;

const body = `
\n--${boundary}\
\nContent-Type: application/json; charset=UTF-8\
\n\n${JSON.stringify(bodyParameters)}\
\n--${boundary}\
\nContent-Type: text/plain\
\nContent-Transfer-Encoding: base64\
\n\n${content}\
\n--${boundary}--`;

const responseData = await googleApiRequest.call(
const uploadData = await googleApiRequest.call(
this,
'POST',
'/upload/drive/v3/files',
body,
content,
{
uploadType: 'multipart',
...qs,
uploadType: 'media',
},
undefined,
{
headers: {
'Content-Type': `multipart/related; boundary=${boundary}`,
'Content-Type': mimeType,
'Content-Length': contentLength,
},
},
);

const uploadId = uploadData.id;

qs.addParents = setParentFolder(folderId, driveId);
delete bodyParameters.parents;

const responseData = await googleApiRequest.call(
this,
'PATCH',
`/drive/v3/files/${uploadId}`,
bodyParameters,
qs,
);

response = { id: responseData.id };
}

Expand Down

0 comments on commit d9e7494

Please sign in to comment.