diff options
| author | Petter Rasmussen | 2016-02-20 23:11:23 +0100 |
|---|---|---|
| committer | Petter Rasmussen | 2016-02-20 23:39:11 +0100 |
| commit | a9e9da783481fcb8022eb52fb944cb9ee13997de (patch) | |
| tree | f817301b74f0f1787e310c8d6f2560bbb9cce457 /drive/upload.go | |
| parent | 308c7dceac93e7496453332139aac006da408629 (diff) | |
| download | gdrive-a9e9da783481fcb8022eb52fb944cb9ee13997de.tar.bz2 | |
Wrap media uploads in TimeoutReader
Diffstat (limited to 'drive/upload.go')
| -rw-r--r-- | drive/upload.go | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drive/upload.go b/drive/upload.go index 05f52cd..2b8c7c3 100644 --- a/drive/upload.go +++ b/drive/upload.go @@ -158,12 +158,15 @@ func (self *Drive) uploadFile(args UploadArgs) (*drive.File, int64, error) { chunkSize := googleapi.ChunkSize(int(args.ChunkSize)) // Wrap file in progress reader - srcReader := getProgressReader(srcFile, args.Progress, srcFileInfo.Size()) + progressReader := getProgressReader(srcFile, args.Progress, srcFileInfo.Size()) + + // Wrap reader in timeout reader + reader, ctx := getTimeoutReaderContext(progressReader) 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").Media(srcReader, chunkSize).Do() + f, err := self.service.Files.Create(dstFile).Fields("id", "name", "size", "md5Checksum", "webContentLink").Context(ctx).Media(reader, chunkSize).Do() if err != nil { return nil, 0, fmt.Errorf("Failed to upload file: %s", err) } @@ -205,12 +208,15 @@ func (self *Drive) UploadStream(args UploadStreamArgs) error { chunkSize := googleapi.ChunkSize(int(args.ChunkSize)) // Wrap file in progress reader - srcReader := getProgressReader(args.In, args.Progress, 0) + progressReader := getProgressReader(args.In, args.Progress, 0) + + // Wrap reader in timeout reader + reader, ctx := getTimeoutReaderContext(progressReader) fmt.Fprintf(args.Out, "Uploading %s\n", dstFile.Name) started := time.Now() - f, err := self.service.Files.Create(dstFile).Fields("id", "name", "size", "webContentLink").Media(srcReader, chunkSize).Do() + f, err := self.service.Files.Create(dstFile).Fields("id", "name", "size", "webContentLink").Context(ctx).Media(reader, chunkSize).Do() if err != nil { return fmt.Errorf("Failed to upload file: %s", err) } |
