From f5ac02652039cbf2e1d13cd40bd25a9843d87654 Mon Sep 17 00:00:00 2001 From: Moe Date: Mon, 15 Jun 2020 08:33:57 -0700 Subject: [PATCH] Google Drive Upload creates appropriate folder for video --- libs/uploaders/googleDrive.js | 63 ++++++++++++++++++++++++++++++----- 1 file changed, 54 insertions(+), 9 deletions(-) diff --git a/libs/uploaders/googleDrive.js b/libs/uploaders/googleDrive.js index 79c753cf..f54ac26c 100644 --- a/libs/uploaders/googleDrive.js +++ b/libs/uploaders/googleDrive.js @@ -8,6 +8,50 @@ module.exports = (s,config,lang,app,io) => { const oAuth2Client = new google.auth.OAuth2(client_id, client_secret, redirect_uris[0]); return oAuth2Client } + const getVideoDirectoryId = (video) => { + return new Promise((resolve, reject) => { + const videoDirectory = s.group[video.ke].init.googd_dir + video.ke + '/' + video.mid + if(!s.group[video.ke].googleDriveFolderIds[video.ke + video.mid]){ + var pageToken = null; + s.group[video.ke].googleDrive.files.list({ + q: `name='${videoDirectory}'`, + fields: 'nextPageToken, files(id, name)', + spaces: 'drive', + pageToken: pageToken + }, function (err, res) { + if (err) { + reject(err) + } else { + var file = res.data.files + if(file[0]){ + file = file[0] + s.group[video.ke].googleDriveFolderIds[video.ke + video.mid] = file.id + resolve(file.id) + }else{ + s.group[video.ke].googleDrive.files.create({ + resource: { + 'name': videoDirectory, + 'mimeType': 'application/vnd.google-apps.folder' + }, + fields: 'id' + }, function (err, response) { + if (err) { + reject(err) + } else { + s.group[video.ke].googleDriveFolderIds[video.ke + video.mid] = response.data.id + console.log(response.data.id) + resolve(response.data.id) + } + }) + } + } + }) + }else{ + resolve(s.group[video.ke].googleDriveFolderIds[video.ke + video.mid]) + } + + }) + } //Google Drive Storage var beforeAccountSaveForGoogleDrive = function(d){ //d = save event @@ -37,6 +81,7 @@ module.exports = (s,config,lang,app,io) => { userDetails = Object.assign(userDetails,config.cloudUploaders.GoogleDrive) } if(userDetails.googd_save === '1'){ + s.group[e.ke].googleDriveFolderIds = {} var oAuth2Client if(!s.group[e.ke].googleDriveOAuth2Client){ oAuth2Client = initializeOAuth(userDetails.googd_credentials) @@ -85,7 +130,7 @@ module.exports = (s,config,lang,app,io) => { callback() }) } - var uploadVideoToGoogleDrive = function(e,k){ + var uploadVideoToGoogleDrive = async function(e,k){ //e = video object //k = temporary values if(!k)k={}; @@ -100,8 +145,13 @@ module.exports = (s,config,lang,app,io) => { var bucketName = s.group[e.ke].init.googd_bucket var saveLocation = s.group[e.ke].init.googd_dir+e.ke+'/'+e.mid+'/'+k.filename s.group[e.ke].googleDrive.files.create({ + resource: { + name: k.filename, + parents: [await getVideoDirectoryId(e)] + }, requestBody: { - name: saveLocation, + name: k.filename, + parents: [await getVideoDirectoryId(e)], mimeType: 'video/'+ext }, media: { @@ -208,12 +258,7 @@ module.exports = (s,config,lang,app,io) => { s.group[video.ke].googleDrive.files .get({fileId, alt: 'media'}, {responseType: 'stream'}) .then(res => { - resolve(res.data.on('end', () => { - console.log('Done downloading file.'); - }) - .on('error', err => { - console.error('Error downloading file.'); - })) + resolve(res.data) }).catch(reject) }) } @@ -288,7 +333,7 @@ module.exports = (s,config,lang,app,io) => { { "hidden": true, "fieldType": "btn", - "attribute": `style="margin-bottom:10px" href="javascript:$.get(getApiPrefix() + '/googleDriveOAuthRequest/' + $user.ke,function(data){if(data.ok)window.open(data.authUrl, 'Google Drive Authentication', 'width=800,height=400');})"`, + "attribute": `style="margin-bottom:1em" href="javascript:$.get(getApiPrefix() + '/googleDriveOAuthRequest/' + $user.ke,function(data){if(data.ok)window.open(data.authUrl, 'Google Drive Authentication', 'width=800,height=400');})"`, "class": `btn-success`, "form-group-class": "autosave_googd_input autosave_googd_1", "btnContent": `   ${lang['Get Code']}`,