package rclone import ( "context" "fmt" "io" "local/logb" "local/sandbox/arlo-cleaner/config" "path" "time" _ "github.com/rclone/rclone/backend/drive" _ "github.com/rclone/rclone/backend/local" _ "github.com/rclone/rclone/backend/s3" "github.com/rclone/rclone/fs" "github.com/rclone/rclone/fs/object" ) func (rc *RClone) Context() context.Context { return context.Background() } func (rc *RClone) CopyTo(r io.Reader, destination string) error { logb.Verbosef("copy to: %v", destination) f, err := fs.NewFs(rc.Context(), path.Dir(destination)) logb.Verbosef("got new fs: %v", err) if err != nil { return err } if info, err := f.NewObject(rc.Context(), path.Base(destination)); err == nil { logb.Warnf("not re-uploading file to: %v: %v", destination, info) fmt.Println("copyTo", 3) return nil } else { logb.Verbosef("error listing existing object as expected: %v, %v", err, info) } logb.Verbosef("new obj err: %v", nil) info := object.NewStaticObjectInfo(path.Base(destination), time.Now(), 0, true, nil, f) logb.Infof("uploading %v", destination) if config.DryRun { logb.Debugf("copy to", info) //return nil TODO } _, err = f.Put(rc.Context(), r, info) return err } func (rc *RClone) CopyFrom(w io.Writer, source string) error { logb.Infof("copying from %v", source) f, err := fs.NewFs(rc.Context(), path.Dir(source)) if err != nil { return err } obj, err := f.NewObject(rc.Context(), path.Base(source)) if err != nil { return err } r, err := obj.Open(rc.Context()) if err != nil { return nil } _, err = io.Copy(w, r) return err }