diff options
| -rw-r--r-- | drive/delete.go | 6 | ||||
| -rw-r--r-- | drive/download.go | 13 | ||||
| -rw-r--r-- | drive/export.go | 2 | ||||
| -rw-r--r-- | drive/info.go | 5 | ||||
| -rw-r--r-- | drive/list.go | 12 | ||||
| -rw-r--r-- | drive/mkdir.go | 5 | ||||
| -rw-r--r-- | drive/sync.go | 11 | ||||
| -rw-r--r-- | drive/sync_download.go | 9 | ||||
| -rw-r--r-- | drive/sync_upload.go | 19 | ||||
| -rw-r--r-- | drive/update.go | 7 | ||||
| -rw-r--r-- | drive/upload.go | 9 |
11 files changed, 57 insertions, 41 deletions
diff --git a/drive/delete.go b/drive/delete.go index 314672c..5b412a8 100644 --- a/drive/delete.go +++ b/drive/delete.go @@ -12,7 +12,7 @@ type DeleteArgs struct { } func (self *Drive) Delete(args DeleteArgs) error { - f, err := self.service.Files.Get(args.Id).Fields("name", "mimeType").Do() + f, err := self.service.Files.Get(args.Id).SupportsAllDrives(true).Fields("name", "mimeType").Do() if err != nil { return fmt.Errorf("Failed to get file: %s", err) } @@ -21,7 +21,7 @@ func (self *Drive) Delete(args DeleteArgs) error { return fmt.Errorf("'%s' is a directory, use the 'recursive' flag to delete directories", f.Name) } - err = self.service.Files.Delete(args.Id).Do() + err = self.service.Files.Delete(args.Id).SupportsAllDrives(true).Do() if err != nil { return fmt.Errorf("Failed to delete file: %s", err) } @@ -31,7 +31,7 @@ func (self *Drive) Delete(args DeleteArgs) error { } func (self *Drive) deleteFile(fileId string) error { - err := self.service.Files.Delete(fileId).Do() + err := self.service.Files.Delete(fileId).SupportsAllDrives(true).Do() if err != nil { return fmt.Errorf("Failed to delete file: %s", err) } diff --git a/drive/download.go b/drive/download.go index e4a4141..795d4b6 100644 --- a/drive/download.go +++ b/drive/download.go @@ -29,7 +29,7 @@ func (self *Drive) Download(args DownloadArgs) error { return self.downloadRecursive(args) } - f, err := self.service.Files.Get(args.Id).Fields("id", "name", "size", "mimeType", "md5Checksum").Do() + f, err := self.service.Files.Get(args.Id).SupportsAllDrives(true).Fields("id", "name", "size", "mimeType", "md5Checksum").Do() if err != nil { return fmt.Errorf("Failed to get file: %s", err) } @@ -108,7 +108,8 @@ func (self *Drive) DownloadQuery(args DownloadQueryArgs) error { } func (self *Drive) downloadRecursive(args DownloadArgs) error { - f, err := self.service.Files.Get(args.Id).Fields("id", "name", "size", "mimeType", "md5Checksum").Do() + fmt.Println("jeff_debug downloadRecursive") + f, err := self.service.Files.Get(args.Id).SupportsAllDrives(true).Fields("id", "name", "size", "mimeType", "md5Checksum").Do() if err != nil { return fmt.Errorf("Failed to get file: %s", err) } @@ -126,8 +127,8 @@ func (self *Drive) downloadRecursive(args DownloadArgs) error { func (self *Drive) downloadBinary(f *drive.File, args DownloadArgs) (int64, int64, error) { // Get timeout reader wrapper and context timeoutReaderWrapper, ctx := getTimeoutReaderWrapperContext(args.Timeout) - - res, err := self.service.Files.Get(f.Id).Context(ctx).Download() + fmt.Println("jeff_debug downloadBinary") + res, err := self.service.Files.Get(f.Id).SupportsAllDrives(true).Context(ctx).Download() if err != nil { if isTimeoutError(err) { return 0, 0, fmt.Errorf("Failed to download file: timeout, no data was transferred for %v", args.Timeout) @@ -140,6 +141,7 @@ func (self *Drive) downloadBinary(f *drive.File, args DownloadArgs) (int64, int6 // Path to file fpath := filepath.Join(args.Path, f.Name) + fmt.Println("fpath:", fpath) if !args.Stdout { fmt.Fprintf(args.Out, "Downloading %s -> %s\n", f.Name, fpath) @@ -197,6 +199,8 @@ func (self *Drive) saveFile(args saveFileArgs) (int64, int64, error) { // Download to tmp file tmpPath := args.fpath + ".incomplete" + fmt.Println("tmpPath:", tmpPath) + // Create new file outFile, err := os.Create(tmpPath) if err != nil { @@ -224,6 +228,7 @@ func (self *Drive) saveFile(args saveFileArgs) (int64, int64, error) { } func (self *Drive) downloadDirectory(parent *drive.File, args DownloadArgs) error { + fmt.Println("jeff_debug downloadDirectory") listArgs := listAllFilesArgs{ query: fmt.Sprintf("'%s' in parents", parent.Id), fields: []googleapi.Field{"nextPageToken", "files(id,name)"}, diff --git a/drive/export.go b/drive/export.go index a09594e..92a44a0 100644 --- a/drive/export.go +++ b/drive/export.go @@ -26,7 +26,7 @@ type ExportArgs struct { } func (self *Drive) Export(args ExportArgs) error { - f, err := self.service.Files.Get(args.Id).Fields("name", "mimeType").Do() + f, err := self.service.Files.Get(args.Id).SupportsTeamDrives(true).Fields("name", "mimeType").Do() if err != nil { return fmt.Errorf("Failed to get file: %s", err) } diff --git a/drive/info.go b/drive/info.go index c6f4471..2a1a20c 100644 --- a/drive/info.go +++ b/drive/info.go @@ -2,8 +2,9 @@ package drive import ( "fmt" - "google.golang.org/api/drive/v3" "io" + + "google.golang.org/api/drive/v3" ) type FileInfoArgs struct { @@ -13,7 +14,7 @@ type FileInfoArgs struct { } func (self *Drive) Info(args FileInfoArgs) error { - f, err := self.service.Files.Get(args.Id).Fields("id", "name", "size", "createdTime", "modifiedTime", "md5Checksum", "mimeType", "parents", "shared", "description", "webContentLink", "webViewLink").Do() + f, err := self.service.Files.Get(args.Id).SupportsAllDrives(true).Fields("id", "name", "size", "createdTime", "modifiedTime", "md5Checksum", "mimeType", "parents", "shared", "description", "webContentLink", "webViewLink").Do() if err != nil { return fmt.Errorf("Failed to get file: %s", err) } diff --git a/drive/list.go b/drive/list.go index ab8aca5..ff52ef5 100644 --- a/drive/list.go +++ b/drive/list.go @@ -2,11 +2,12 @@ package drive import ( "fmt" + "io" + "text/tabwriter" + "golang.org/x/net/context" "google.golang.org/api/drive/v3" "google.golang.org/api/googleapi" - "io" - "text/tabwriter" ) type ListFilesArgs struct { @@ -73,10 +74,13 @@ func (self *Drive) listAllFiles(args listAllFilesArgs) ([]*drive.File, error) { } controlledStop := fmt.Errorf("Controlled stop") - - err := self.service.Files.List().Q(args.query).Fields(args.fields...).OrderBy(args.sortOrder).PageSize(pageSize).Pages(context.TODO(), func(fl *drive.FileList) error { + fmt.Println(args.query) + err := self.service.Files.List().Corpora("allDrives").IncludeItemsFromAllDrives(true).SupportsAllDrives(true).Q(args.query).Fields(args.fields...).OrderBy(args.sortOrder).PageSize(pageSize).Pages(context.TODO(), func(fl *drive.FileList) error { files = append(files, fl.Files...) + fmt.Println("jeff_debug listAllFiles") + fmt.Println(fl.Files) + fmt.Println(files) // Stop when we have all the files we need if args.maxFiles > 0 && len(files) >= int(args.maxFiles) { return controlledStop diff --git a/drive/mkdir.go b/drive/mkdir.go index 05d5191..1fabef0 100644 --- a/drive/mkdir.go +++ b/drive/mkdir.go @@ -2,8 +2,9 @@ package drive import ( "fmt" - "google.golang.org/api/drive/v3" "io" + + "google.golang.org/api/drive/v3" ) const DirectoryMimeType = "application/vnd.google-apps.folder" @@ -35,7 +36,7 @@ func (self *Drive) mkdir(args MkdirArgs) (*drive.File, error) { dstFile.Parents = args.Parents // Create directory - f, err := self.service.Files.Create(dstFile).Do() + f, err := self.service.Files.Create(dstFile).SupportsAllDrives(true).Do() if err != nil { return nil, fmt.Errorf("Failed to create directory: %s", err) } diff --git a/drive/sync.go b/drive/sync.go index 4b2d08b..55192db 100644 --- a/drive/sync.go +++ b/drive/sync.go @@ -2,16 +2,17 @@ package drive import ( "fmt" - "github.com/sabhiram/go-gitignore" - "github.com/soniakeys/graph" - "google.golang.org/api/drive/v3" - "google.golang.org/api/googleapi" "io" "os" "path/filepath" "strings" "text/tabwriter" "time" + + "github.com/sabhiram/go-gitignore" + "github.com/soniakeys/graph" + "google.golang.org/api/drive/v3" + "google.golang.org/api/googleapi" ) const DefaultIgnoreFile = ".gdriveignore" @@ -86,7 +87,7 @@ func (self *Drive) prepareSyncFiles(localPath string, root *drive.File, cmp File } func (self *Drive) isSyncFile(id string) (bool, error) { - f, err := self.service.Files.Get(id).Fields("appProperties").Do() + f, err := self.service.Files.Get(id).SupportsAllDrives(true).Fields("appProperties").Do() if err != nil { return false, fmt.Errorf("Failed to get file: %s", err) } diff --git a/drive/sync_download.go b/drive/sync_download.go index 58cd49c..9a88b61 100644 --- a/drive/sync_download.go +++ b/drive/sync_download.go @@ -3,13 +3,14 @@ package drive import ( "bytes" "fmt" - "google.golang.org/api/drive/v3" - "google.golang.org/api/googleapi" "io" "os" "path/filepath" "sort" "time" + + "google.golang.org/api/drive/v3" + "google.golang.org/api/googleapi" ) type DownloadSyncArgs struct { @@ -85,7 +86,7 @@ func (self *Drive) DownloadSync(args DownloadSyncArgs) error { func (self *Drive) getSyncRoot(rootId string) (*drive.File, error) { fields := []googleapi.Field{"id", "name", "mimeType", "appProperties"} - f, err := self.service.Files.Get(rootId).Fields(fields...).Do() + f, err := self.service.Files.Get(rootId).SupportsAllDrives(true).Fields(fields...).Do() if err != nil { return nil, fmt.Errorf("Failed to find root dir: %s", err) } @@ -191,7 +192,7 @@ func (self *Drive) downloadRemoteFile(id, fpath string, args DownloadSyncArgs, t // Get timeout reader wrapper and context timeoutReaderWrapper, ctx := getTimeoutReaderWrapperContext(args.Timeout) - res, err := self.service.Files.Get(id).Context(ctx).Download() + res, err := self.service.Files.Get(id).SupportsAllDrives(true).Context(ctx).Download() if err != nil { if isBackendOrRateLimitError(err) && try < MaxErrorRetries { exponentialBackoffSleep(try) diff --git a/drive/sync_upload.go b/drive/sync_upload.go index f1e43a4..bd2b76d 100644 --- a/drive/sync_upload.go +++ b/drive/sync_upload.go @@ -3,13 +3,14 @@ package drive import ( "bytes" "fmt" - "google.golang.org/api/drive/v3" - "google.golang.org/api/googleapi" "io" "os" "path/filepath" "sort" "time" + + "google.golang.org/api/drive/v3" + "google.golang.org/api/googleapi" ) type UploadSyncArgs struct { @@ -96,7 +97,7 @@ func (self *Drive) UploadSync(args UploadSyncArgs) error { func (self *Drive) prepareSyncRoot(args UploadSyncArgs) (*drive.File, error) { fields := []googleapi.Field{"id", "name", "mimeType", "appProperties"} - f, err := self.service.Files.Get(args.RootId).Fields(fields...).Do() + f, err := self.service.Files.Get(args.RootId).SupportsAllDrives(true).Fields(fields...).Do() if err != nil { return nil, fmt.Errorf("Failed to find root dir: %s", err) } @@ -128,7 +129,7 @@ func (self *Drive) prepareSyncRoot(args UploadSyncArgs) (*drive.File, error) { AppProperties: map[string]string{"sync": "true", "syncRoot": "true"}, } - f, err = self.service.Files.Update(f.Id, dstFile).Fields(fields...).Do() + f, err = self.service.Files.Update(f.Id, dstFile).SupportsAllDrives(true).Fields(fields...).Do() if err != nil { return nil, fmt.Errorf("Failed to update root directory: %s", err) } @@ -268,7 +269,7 @@ func (self *Drive) createMissingRemoteDir(args createMissingRemoteDirArgs) (*dri return dstFile, nil } - f, err := self.service.Files.Create(dstFile).Do() + f, err := self.service.Files.Create(dstFile).SupportsAllDrives(true).Do() if err != nil { if isBackendOrRateLimitError(err) && args.try < MaxErrorRetries { exponentialBackoffSleep(args.try) @@ -311,7 +312,7 @@ func (self *Drive) uploadMissingFile(parentId string, lf *LocalFile, args Upload // Wrap reader in timeout reader reader, ctx := getTimeoutReaderContext(progressReader, args.Timeout) - _, err = self.service.Files.Create(dstFile).Fields("id", "name", "size", "md5Checksum").Context(ctx).Media(reader, chunkSize).Do() + _, err = self.service.Files.Create(dstFile).SupportsAllDrives(true).Fields("id", "name", "size", "md5Checksum").Context(ctx).Media(reader, chunkSize).Do() if err != nil { if isBackendOrRateLimitError(err) && try < MaxErrorRetries { exponentialBackoffSleep(try) @@ -352,7 +353,7 @@ func (self *Drive) updateChangedFile(cf *changedFile, args UploadSyncArgs, try i // Wrap reader in timeout reader reader, ctx := getTimeoutReaderContext(progressReader, args.Timeout) - _, err = self.service.Files.Update(cf.remote.file.Id, dstFile).Context(ctx).Media(reader, chunkSize).Do() + _, err = self.service.Files.Update(cf.remote.file.Id, dstFile).SupportsAllDrives(true).Context(ctx).Media(reader, chunkSize).Do() if err != nil { if isBackendOrRateLimitError(err) && try < MaxErrorRetries { exponentialBackoffSleep(try) @@ -373,7 +374,7 @@ func (self *Drive) deleteRemoteFile(rf *RemoteFile, args UploadSyncArgs, try int return nil } - err := self.service.Files.Delete(rf.file.Id).Do() + err := self.service.Files.Delete(rf.file.Id).SupportsAllDrives(true).Do() if err != nil { if isBackendOrRateLimitError(err) && try < MaxErrorRetries { exponentialBackoffSleep(try) @@ -389,7 +390,7 @@ func (self *Drive) deleteRemoteFile(rf *RemoteFile, args UploadSyncArgs, try int func (self *Drive) dirIsEmpty(id string) (bool, error) { query := fmt.Sprintf("'%s' in parents", id) - fileList, err := self.service.Files.List().Q(query).Do() + fileList, err := self.service.Files.List().Corpora("allDrives").IncludeItemsFromAllDrives(true).SupportsAllDrives(true).Q(query).Do() if err != nil { return false, fmt.Errorf("Empty dir check failed: ", err) } diff --git a/drive/update.go b/drive/update.go index f496f52..0d397e5 100644 --- a/drive/update.go +++ b/drive/update.go @@ -2,12 +2,13 @@ package drive import ( "fmt" - "google.golang.org/api/drive/v3" - "google.golang.org/api/googleapi" "io" "mime" "path/filepath" "time" + + "google.golang.org/api/drive/v3" + "google.golang.org/api/googleapi" ) type UpdateArgs struct { @@ -64,7 +65,7 @@ func (self *Drive) Update(args UpdateArgs) error { fmt.Fprintf(args.Out, "Uploading %s\n", args.Path) started := time.Now() - f, err := self.service.Files.Update(args.Id, dstFile).Fields("id", "name", "size").Context(ctx).Media(reader, chunkSize).Do() + f, err := self.service.Files.Update(args.Id, dstFile).SupportsAllDrives(true).Fields("id", "name", "size").Context(ctx).Media(reader, chunkSize).Do() if err != nil { if isTimeoutError(err) { return fmt.Errorf("Failed to upload file: timeout, no data was transferred for %v", args.Timeout) diff --git a/drive/upload.go b/drive/upload.go index a4482e2..6b7889a 100644 --- a/drive/upload.go +++ b/drive/upload.go @@ -2,13 +2,14 @@ package drive import ( "fmt" - "google.golang.org/api/drive/v3" - "google.golang.org/api/googleapi" "io" "mime" "os" "path/filepath" "time" + + "google.golang.org/api/drive/v3" + "google.golang.org/api/googleapi" ) type UploadArgs struct { @@ -184,7 +185,7 @@ func (self *Drive) uploadFile(args UploadArgs) (*drive.File, int64, error) { fmt.Fprintf(args.Out, "Uploading %s\n", args.Path) started := time.Now() - f, err := self.service.Files.Create(dstFile).Fields("id", "name", "size", "md5Checksum", "webContentLink").Context(ctx).Media(reader, chunkSize).Do() + f, err := self.service.Files.Create(dstFile).SupportsAllDrives(true).Fields("id", "name", "size", "md5Checksum", "webContentLink").Context(ctx).Media(reader, chunkSize).Do() if err != nil { if isTimeoutError(err) { return nil, 0, fmt.Errorf("Failed to upload file: timeout, no data was transferred for %v", args.Timeout) @@ -239,7 +240,7 @@ func (self *Drive) UploadStream(args UploadStreamArgs) error { fmt.Fprintf(args.Out, "Uploading %s\n", dstFile.Name) started := time.Now() - f, err := self.service.Files.Create(dstFile).Fields("id", "name", "size", "webContentLink").Context(ctx).Media(reader, chunkSize).Do() + f, err := self.service.Files.Create(dstFile).SupportsAllDrives(true).Fields("id", "name", "size", "webContentLink").Context(ctx).Media(reader, chunkSize).Do() if err != nil { if isTimeoutError(err) { return fmt.Errorf("Failed to upload file: timeout, no data was transferred for %v", args.Timeout) |
