Explorar el Código

Google Drive: move to v3 API

Uses v3 of the Google Drive API instead of v2.
Paul Nicholls hace 6 años
padre
commit
b1fd98dc3d

+ 14 - 4
packages/@uppy/companion/src/server/provider/drive.js

@@ -2,7 +2,8 @@ const request = require('request')
 // @ts-ignore
 // @ts-ignore
 const purest = require('purest')({ request })
 const purest = require('purest')({ request })
 const logger = require('../logger')
 const logger = require('../logger')
-
+const DRIVE_FILE_FIELDS = 'kind,id,name,mimeType,ownedByMe,permissions(role,emailAddress),size,modifiedTime,iconLink,thumbnailLink'
+const DRIVE_FILES_FIELDS = `kind,nextPageToken,incompleteSearch,files(${DRIVE_FILE_FIELDS})`
 /**
 /**
  * @class
  * @class
  * @implements {Provider}
  * @implements {Provider}
@@ -11,6 +12,7 @@ class Drive {
   constructor (options) {
   constructor (options) {
     this.authProvider = options.provider = Drive.authProvider
     this.authProvider = options.provider = Drive.authProvider
     options.alias = 'drive'
     options.alias = 'drive'
+    options.version = 'v3'
 
 
     this.client = purest(options)
     this.client = purest(options)
   }
   }
@@ -26,13 +28,21 @@ class Drive {
     return this.client
     return this.client
       .query()
       .query()
       .get('files')
       .get('files')
-      .where({ q: `'${directory}' in parents and trashed=${trashed}` })
+      .where({
+        fields: DRIVE_FILES_FIELDS,
+        q: `'${directory}' in parents and trashed=${trashed}`
+      })
       .auth(options.token)
       .auth(options.token)
       .request(done)
       .request(done)
   }
   }
 
 
   stats ({ id, token }, done) {
   stats ({ id, token }, done) {
-    return this.client.query().get(`files/${id}`).auth(token).request(done)
+    return this.client
+      .query()
+      .get(`files/${id}`)
+      .where({fields: DRIVE_FILE_FIELDS})
+      .auth(token)
+      .request(done)
   }
   }
 
 
   download ({ id, token }, onData) {
   download ({ id, token }, onData) {
@@ -65,7 +75,7 @@ class Drive {
         logger.error(err, 'provider.drive.size.error')
         logger.error(err, 'provider.drive.size.error')
         return done(null)
         return done(null)
       }
       }
-      done(parseInt(body.fileSize))
+      done(parseInt(body.size))
     })
     })
   }
   }
 }
 }

+ 9 - 9
packages/@uppy/google-drive/src/index.js

@@ -57,11 +57,11 @@ module.exports = class GoogleDrive extends Plugin {
   }
   }
 
 
   getUsername (data) {
   getUsername (data) {
-    for (const item of data.items) {
-      if (item.userPermission.role === 'owner') {
-        for (const owner of item.owners) {
-          if (owner.isAuthenticatedUser) {
-            return owner.emailAddress
+    for (const item of data.files) {
+      if (item.ownedByMe) {
+        for (const permission of item.permissions) {
+          if (permission.role === 'owner') {
+            return permission.emailAddress
           }
           }
         }
         }
       }
       }
@@ -73,7 +73,7 @@ module.exports = class GoogleDrive extends Plugin {
   }
   }
 
 
   getItemData (item) {
   getItemData (item) {
-    return Object.assign({}, item, {size: parseFloat(item.fileSize)})
+    return Object.assign({}, item, {size: parseFloat(item.size)})
   }
   }
 
 
   getItemIcon (item) {
   getItemIcon (item) {
@@ -81,13 +81,13 @@ module.exports = class GoogleDrive extends Plugin {
   }
   }
 
 
   getItemSubList (item) {
   getItemSubList (item) {
-    return item.items.filter((i) => {
+    return item.files.filter((i) => {
       return this.isFolder(i) || !i.mimeType.startsWith('application/vnd.google')
       return this.isFolder(i) || !i.mimeType.startsWith('application/vnd.google')
     })
     })
   }
   }
 
 
   getItemName (item) {
   getItemName (item) {
-    return item.title ? item.title : '/'
+    return item.name ? item.name : '/'
   }
   }
 
 
   getMimeType (item) {
   getMimeType (item) {
@@ -103,7 +103,7 @@ module.exports = class GoogleDrive extends Plugin {
   }
   }
 
 
   getItemModifiedDate (item) {
   getItemModifiedDate (item) {
-    return item.modifiedByMeDate
+    return item.modifiedTime
   }
   }
 
 
   getItemThumbnailUrl (item) {
   getItemThumbnailUrl (item) {