From 73c8373e38fad08104d178ef63b0498bb5db778d Mon Sep 17 00:00:00 2001 From: harshaio Date: Mon, 8 Apr 2024 13:19:25 +0530 Subject: [PATCH] update --- .../google/drive/CreateFolder/CreateFolder.js | 6 +++--- .../google/drive/FindFileOrFolder/FindFileOrFolder.js | 11 ++++++----- src/appmixer/google/drive/UploadFile/UploadFile.js | 1 + src/appmixer/google/drive/drive-commons.js | 11 ++++++----- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/appmixer/google/drive/CreateFolder/CreateFolder.js b/src/appmixer/google/drive/CreateFolder/CreateFolder.js index 2280983b8..07487e36e 100644 --- a/src/appmixer/google/drive/CreateFolder/CreateFolder.js +++ b/src/appmixer/google/drive/CreateFolder/CreateFolder.js @@ -10,9 +10,9 @@ module.exports = { const drive = google.drive({ version: 'v3', auth }); const { userId } = context.auth; let { folderName, folderLocation, useExisting } = context.messages.in.content; - const folderNameEscaped = commons.escapeFolderName(folderName); + const escapedFolderName = commons.escapeSpecialCharacters(folderName); const resource = { - name: folderNameEscaped, + name: folderName, mimeType: 'application/vnd.google-apps.folder' }; let folderId; @@ -26,7 +26,7 @@ module.exports = { } if (useExisting) { - const query = `name='${folderNameEscaped}' and mimeType='application/vnd.google-apps.folder' and parents in '${folderLocation ? folderId : 'root'}' and trashed=false`; + const query = `name='${escapedFolderName}' and mimeType='application/vnd.google-apps.folder' and parents in '${folderLocation ? folderId : 'root'}' and trashed=false`; const { data } = await drive.files.list({ q: query }); diff --git a/src/appmixer/google/drive/FindFileOrFolder/FindFileOrFolder.js b/src/appmixer/google/drive/FindFileOrFolder/FindFileOrFolder.js index 59d130fad..a8acf89a4 100644 --- a/src/appmixer/google/drive/FindFileOrFolder/FindFileOrFolder.js +++ b/src/appmixer/google/drive/FindFileOrFolder/FindFileOrFolder.js @@ -9,6 +9,7 @@ module.exports = { const auth = commons.getOauth2Client(context.auth); const drive = google.drive({ version: 'v3', auth }); let { query, searchType, folderLocation } = context.messages.in.content; + const escapedQuery = commons.escapeSpecialCharacters(query); let folderId; if (folderLocation) { @@ -26,15 +27,15 @@ module.exports = { let q; if (searchType === 'fileNameExact') { - q = `name='${query}'` + querySuffix + queryFileSuffix; + q = `name='${escapedQuery}'` + querySuffix + queryFileSuffix; } else if (searchType === 'fileNameContains') { - q = `name contains '${query}'` + querySuffix + queryFileSuffix; + q = `name contains '${escapedQuery}'` + querySuffix + queryFileSuffix; } else if (searchType === 'folderNameExact') { - q = `name='${query}'` + querySuffix + queryFolderSuffix; + q = `name='${escapedQuery}'` + querySuffix + queryFolderSuffix; } else if (searchType === 'folderNameContains') { - q = `name contains '${query}'` + querySuffix + queryFolderSuffix; + q = `name contains '${escapedQuery}'` + querySuffix + queryFolderSuffix; } else if (searchType === 'fullText') { - q = `fullText contains '${query}'` + querySuffix; + q = `fullText contains '${escapedQuery}'` + querySuffix; } else { q = query; // no query suffix, this is a completely custom search. } diff --git a/src/appmixer/google/drive/UploadFile/UploadFile.js b/src/appmixer/google/drive/UploadFile/UploadFile.js index 8a1adf0d7..a6cf59729 100644 --- a/src/appmixer/google/drive/UploadFile/UploadFile.js +++ b/src/appmixer/google/drive/UploadFile/UploadFile.js @@ -41,6 +41,7 @@ module.exports = { let response; if (replace) { + filename = commons.escapeSpecialCharacters(filename); const query = `name='${filename}' and parents in '${folder ? folderId : 'root'}' and trashed=false`; const { data } = await drive.files.list({ q: query diff --git a/src/appmixer/google/drive/drive-commons.js b/src/appmixer/google/drive/drive-commons.js index daf62b764..25abbb5f3 100644 --- a/src/appmixer/google/drive/drive-commons.js +++ b/src/appmixer/google/drive/drive-commons.js @@ -46,23 +46,24 @@ const processedItemsBuffer = function(data = []) { }; }; -const escapeFolderName = (folderName) => { +const escapeSpecialCharacters = (string) => { - const specialCharacters = ['\\', '"', "'", '\`']; + if (!string) return string; + const specialCharacters = ['\\', '"', "'", '\`']; // Escape special characters with backslash specialCharacters.forEach(char => { - folderName = folderName.replace(new RegExp(`\\${char}`, 'g'), `\\${char}`); + string = string.replace(new RegExp(`\\${char}`, 'g'), `\\${char}`); }); - return folderName; + return string; }; module.exports = { processedItemsBuffer, defaultExportFormats, - escapeFolderName, + escapeSpecialCharacters, getOauth2Client(auth) {