aboutsummaryrefslogtreecommitdiffstats
path: root/drive/update.go
diff options
context:
space:
mode:
Diffstat (limited to 'drive/update.go')
-rw-r--r--drive/update.go106
1 files changed, 53 insertions, 53 deletions
diff --git a/drive/update.go b/drive/update.go
index 5bdd040..156eb2f 100644
--- a/drive/update.go
+++ b/drive/update.go
@@ -1,75 +1,75 @@
package drive
import (
- "fmt"
- "mime"
- "time"
- "io"
- "path/filepath"
- "google.golang.org/api/googleapi"
- "google.golang.org/api/drive/v3"
+ "fmt"
+ "google.golang.org/api/drive/v3"
+ "google.golang.org/api/googleapi"
+ "io"
+ "mime"
+ "path/filepath"
+ "time"
)
type UpdateArgs struct {
- Out io.Writer
- Progress io.Writer
- Id string
- Path string
- Name string
- Parents []string
- Mime string
- Recursive bool
- ChunkSize int64
+ Out io.Writer
+ Progress io.Writer
+ Id string
+ Path string
+ Name string
+ Parents []string
+ Mime string
+ Recursive bool
+ ChunkSize int64
}
func (self *Drive) Update(args UpdateArgs) error {
- srcFile, srcFileInfo, err := openFile(args.Path)
- if err != nil {
- return fmt.Errorf("Failed to open file: %s", err)
- }
+ srcFile, srcFileInfo, err := openFile(args.Path)
+ if err != nil {
+ return fmt.Errorf("Failed to open file: %s", err)
+ }
- defer srcFile.Close()
+ defer srcFile.Close()
- // Instantiate empty drive file
- dstFile := &drive.File{}
+ // Instantiate empty drive file
+ dstFile := &drive.File{}
- // Use provided file name or use filename
- if args.Name == "" {
- dstFile.Name = filepath.Base(srcFileInfo.Name())
- } else {
- dstFile.Name = args.Name
- }
+ // Use provided file name or use filename
+ if args.Name == "" {
+ dstFile.Name = filepath.Base(srcFileInfo.Name())
+ } else {
+ dstFile.Name = args.Name
+ }
- // Set provided mime type or get type based on file extension
- if args.Mime == "" {
- dstFile.MimeType = mime.TypeByExtension(filepath.Ext(dstFile.Name))
- } else {
- dstFile.MimeType = args.Mime
- }
+ // Set provided mime type or get type based on file extension
+ if args.Mime == "" {
+ dstFile.MimeType = mime.TypeByExtension(filepath.Ext(dstFile.Name))
+ } else {
+ dstFile.MimeType = args.Mime
+ }
- // Set parent folders
- dstFile.Parents = args.Parents
+ // Set parent folders
+ dstFile.Parents = args.Parents
- // Chunk size option
- chunkSize := googleapi.ChunkSize(int(args.ChunkSize))
+ // Chunk size option
+ chunkSize := googleapi.ChunkSize(int(args.ChunkSize))
- // Wrap file in progress reader
- progressReader := getProgressReader(srcFile, args.Progress, srcFileInfo.Size())
+ // Wrap file in progress reader
+ progressReader := getProgressReader(srcFile, args.Progress, srcFileInfo.Size())
- // Wrap reader in timeout reader
- reader, ctx := getTimeoutReaderContext(progressReader)
+ // Wrap reader in timeout reader
+ reader, ctx := getTimeoutReaderContext(progressReader)
- fmt.Fprintf(args.Out, "Uploading %s\n", args.Path)
- started := time.Now()
+ 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()
- if err != nil {
- return fmt.Errorf("Failed to upload file: %s", err)
- }
+ f, err := self.service.Files.Update(args.Id, dstFile).Fields("id", "name", "size").Context(ctx).Media(reader, chunkSize).Do()
+ if err != nil {
+ return fmt.Errorf("Failed to upload file: %s", err)
+ }
- // Calculate average upload rate
- rate := calcRate(f.Size, started, time.Now())
+ // Calculate average upload rate
+ rate := calcRate(f.Size, started, time.Now())
- fmt.Fprintf(args.Out, "Updated %s at %s/s, total %s\n", f.Id, formatSize(rate, false), formatSize(f.Size, false))
- return nil
+ fmt.Fprintf(args.Out, "Updated %s at %s/s, total %s\n", f.Id, formatSize(rate, false), formatSize(f.Size, false))
+ return nil
}