first commit
Security: Sync from Public / sync-from-public (push) Has been cancelled
Test: Benchmark Nightly / build (push) Has been cancelled
Test: Benchmark Nightly / Notify Cats on failure (push) Has been cancelled
CI: Python / Checks (push) Has been cancelled
Test: Evals Python / Workflow Comparison Python (push) Has been cancelled
Util: Check Docs URLs / check-docs-urls (push) Has been cancelled
Test: Visual Storybook / Cloudflare Pages (push) Has been cancelled
Test: E2E Performance / build-and-test-performance (push) Has been cancelled
Test: Workflows Nightly / Run Workflow Tests (push) Has been cancelled
Util: Cleanup CI Docker Images / Delete stale CI images (push) Has been cancelled
Test: Benchmark Destroy Env / build (push) Has been cancelled
Util: Update Node Popularity / update-popularity (push) Has been cancelled
Test: E2E Coverage Weekly / Coverage Tests (push) Has been cancelled
Security: Sync from Public / sync-from-public (push) Has been cancelled
Test: Benchmark Nightly / build (push) Has been cancelled
Test: Benchmark Nightly / Notify Cats on failure (push) Has been cancelled
CI: Python / Checks (push) Has been cancelled
Test: Evals Python / Workflow Comparison Python (push) Has been cancelled
Util: Check Docs URLs / check-docs-urls (push) Has been cancelled
Test: Visual Storybook / Cloudflare Pages (push) Has been cancelled
Test: E2E Performance / build-and-test-performance (push) Has been cancelled
Test: Workflows Nightly / Run Workflow Tests (push) Has been cancelled
Util: Cleanup CI Docker Images / Delete stale CI images (push) Has been cancelled
Test: Benchmark Destroy Env / build (push) Has been cancelled
Util: Update Node Popularity / update-popularity (push) Has been cancelled
Test: E2E Coverage Weekly / Coverage Tests (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
import type { ILoadOptionsFunctions, INodeListSearchResult } from 'n8n-workflow';
|
||||
|
||||
import { googleApiRequest } from './GenericFunctions';
|
||||
|
||||
interface GoogleDriveFilesItem {
|
||||
id: string;
|
||||
name: string;
|
||||
mimeType: string;
|
||||
webViewLink: string;
|
||||
}
|
||||
|
||||
interface GoogleDriveDriveItem {
|
||||
id: string;
|
||||
name: string;
|
||||
}
|
||||
|
||||
export async function fileSearch(
|
||||
this: ILoadOptionsFunctions,
|
||||
filter?: string,
|
||||
paginationToken?: string,
|
||||
): Promise<INodeListSearchResult> {
|
||||
const query: string[] = [];
|
||||
if (filter) {
|
||||
query.push(`name contains '${filter.replace("'", "\\'")}'`);
|
||||
}
|
||||
query.push("mimeType != 'application/vnd.google-apps.folder'");
|
||||
const res = await googleApiRequest.call(this, 'GET', '/drive/v3/files', undefined, {
|
||||
q: query.join(' and '),
|
||||
pageToken: paginationToken,
|
||||
fields: 'nextPageToken,files(id,name,mimeType,webViewLink)',
|
||||
orderBy: 'name_natural',
|
||||
});
|
||||
return {
|
||||
results: res.files.map((i: GoogleDriveFilesItem) => ({
|
||||
name: i.name,
|
||||
value: i.id,
|
||||
url: i.webViewLink,
|
||||
})),
|
||||
paginationToken: res.nextPageToken,
|
||||
};
|
||||
}
|
||||
|
||||
export async function folderSearch(
|
||||
this: ILoadOptionsFunctions,
|
||||
filter?: string,
|
||||
paginationToken?: string,
|
||||
): Promise<INodeListSearchResult> {
|
||||
const query: string[] = [];
|
||||
if (filter) {
|
||||
query.push(`name contains '${filter.replace("'", "\\'")}'`);
|
||||
}
|
||||
query.push("mimeType = 'application/vnd.google-apps.folder'");
|
||||
const res = await googleApiRequest.call(this, 'GET', '/drive/v3/files', undefined, {
|
||||
q: query.join(' and '),
|
||||
pageToken: paginationToken,
|
||||
fields: 'nextPageToken,files(id,name,mimeType,webViewLink)',
|
||||
orderBy: 'name_natural',
|
||||
});
|
||||
return {
|
||||
results: res.files.map((i: GoogleDriveFilesItem) => ({
|
||||
name: i.name,
|
||||
value: i.id,
|
||||
url: i.webViewLink,
|
||||
})),
|
||||
paginationToken: res.nextPageToken,
|
||||
};
|
||||
}
|
||||
|
||||
export async function driveSearch(
|
||||
this: ILoadOptionsFunctions,
|
||||
filter?: string,
|
||||
paginationToken?: string,
|
||||
): Promise<INodeListSearchResult> {
|
||||
const res = await googleApiRequest.call(this, 'GET', '/drive/v3/drives', undefined, {
|
||||
q: filter ? `name contains '${filter.replace("'", "\\'")}'` : undefined,
|
||||
pageToken: paginationToken,
|
||||
});
|
||||
return {
|
||||
results: res.drives.map((i: GoogleDriveDriveItem) => ({
|
||||
name: i.name,
|
||||
value: i.id,
|
||||
})),
|
||||
paginationToken: res.nextPageToken,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user