Skip to content

Commit

Permalink
experiment resumable upload
Browse files Browse the repository at this point in the history
  • Loading branch information
kcwu committed Mar 22, 2015
1 parent 6afbeff commit a4d9a33
Showing 1 changed file with 18 additions and 4 deletions.
22 changes: 18 additions & 4 deletions src/remote.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import (
"code.google.com/p/goauth2/oauth"
"github.com/odeke-em/drive/config"
drive "github.com/odeke-em/google-api-go-client/drive/v2"
netcontext "golang.org/x/net/context"
)

const (
Expand Down Expand Up @@ -424,7 +425,11 @@ func (r *Remote) upsertByComparison(body io.Reader, args *upsertOpt) (f *File, e
if args.src.Id == "" {
req := r.service.Files.Insert(uploaded)
if !args.src.IsDir && body != nil {
req = req.Media(body)
if readerAt, ok := body.(io.ReaderAt); ok {
req = req.ResumableMedia(netcontext.TODO(), readerAt, args.src.Size, "")
} else {
req = req.Media(body)
}
}
if uploaded, err = req.Do(); err != nil {
return
Expand Down Expand Up @@ -454,10 +459,19 @@ func (r *Remote) upsertByComparison(body io.Reader, args *upsertOpt) (f *File, e
}

if !args.src.IsDir {
if args.dest == nil || args.nonStatable {
req = req.Media(body)
var needUpload bool
if args.nonStatable || args.dest == nil {
needUpload = true
} else if mask := fileDifferences(args.src, args.dest, args.ignoreChecksum); checksumDiffers(mask) {
req = req.Media(body)
needUpload = true
}

if needUpload {
if readerAt, ok := body.(io.ReaderAt); ok {
req = req.ResumableMedia(netcontext.TODO(), readerAt, args.src.Size, "")
} else {
req = req.Media(body)
}
}
}
if uploaded, err = req.Do(); err != nil {
Expand Down

0 comments on commit a4d9a33

Please sign in to comment.