diff options
| author | jeff.yin | 2019-11-12 11:29:05 +0800 | 
|---|---|---|
| committer | Teddy Wing | 2023-03-27 19:31:17 +0200 | 
| commit | 92d09a94cdd8c2f78bd9615b5eefd635c369fd87 (patch) | |
| tree | 4b2dc6a7fd6c817efdc5d00e1b209e9bdda24a36 /drive | |
| parent | 8b463b2b53fa43270681f8b829f073fd60ab0b7b (diff) | |
| download | gdrive-92d09a94cdd8c2f78bd9615b5eefd635c369fd87.tar.bz2 | |
Diffstat (limited to 'drive')
| -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) | 
