From ecb3c7bcef59512eae150819fa6cda5355c5dc08 Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Sat, 28 Feb 2015 15:58:37 +0000 Subject: [PATCH] drive, googlecloudstorage: remove SeekWrapper after googleapi fix --- drive/drive.go | 2 -- fs/seekwrapper.go | 39 ------------------------ googlecloudstorage/googlecloudstorage.go | 2 -- 3 files changed, 43 deletions(-) delete mode 100644 fs/seekwrapper.go diff --git a/drive/drive.go b/drive/drive.go index 9cae15742..12788c8c6 100644 --- a/drive/drive.go +++ b/drive/drive.go @@ -713,7 +713,6 @@ func (f *FsDrive) Put(in io.Reader, remote string, modTime time.Time, size int64 } // Make the API request to upload metadata and file data. - in = &fs.SeekWrapper{In: in, Size: size} var info *drive.File // Don't retry, return a retry error instead f.beginCall() @@ -944,7 +943,6 @@ func (o *FsObjectDrive) Update(in io.Reader, modTime time.Time, size int64) erro } // Make the API request to upload metadata and file data. - in = &fs.SeekWrapper{In: in, Size: size} var err error var info *drive.File // Don't retry, return a retry error instead diff --git a/fs/seekwrapper.go b/fs/seekwrapper.go deleted file mode 100644 index 6975bfb31..000000000 --- a/fs/seekwrapper.go +++ /dev/null @@ -1,39 +0,0 @@ -package fs - -import ( - "io" - "os" -) - -// SeekWrapper wraps an io.Reader with a basic Seek method which -// returns the Size attribute. -// -// This is used for google.golang.org/api/googleapi/googleapi.go -// to detect the length (see getReaderSize function) -// -// Without this the getReaderSize function reads the entire file into -// memory to find its length. -type SeekWrapper struct { - In io.Reader - Size int64 -} - -// Read bytes from the object - see io.Reader -func (file *SeekWrapper) Read(p []byte) (n int, err error) { - return file.In.Read(p) -} - -// Seek - minimal implementation for Google API length detection -func (file *SeekWrapper) Seek(offset int64, whence int) (int64, error) { - switch whence { - case os.SEEK_CUR: - return 0, nil - case os.SEEK_END: - return file.Size, nil - } - return 0, nil -} - -// Interfaces that SeekWrapper implements -var _ io.Reader = (*SeekWrapper)(nil) -var _ io.Seeker = (*SeekWrapper)(nil) diff --git a/googlecloudstorage/googlecloudstorage.go b/googlecloudstorage/googlecloudstorage.go index 67c977143..4e6d3f9ac 100644 --- a/googlecloudstorage/googlecloudstorage.go +++ b/googlecloudstorage/googlecloudstorage.go @@ -359,7 +359,6 @@ func (f *FsStorage) ListDir() fs.DirChan { func (f *FsStorage) Put(in io.Reader, remote string, modTime time.Time, size int64) (fs.Object, error) { // Temporary FsObject under construction o := &FsObjectStorage{storage: f, remote: remote} - in = &fs.SeekWrapper{In: in, Size: size} return o, o.Update(in, modTime, size) } @@ -556,7 +555,6 @@ func (o *FsObjectStorage) Update(in io.Reader, modTime time.Time, size int64) er Updated: modTime.Format(timeFormatOut), // Doesn't get set Metadata: metadataFromModTime(modTime), } - in = &fs.SeekWrapper{In: in, Size: size} newObject, err := o.storage.svc.Objects.Insert(o.storage.bucket, &object).Media(in).Name(object.Name).PredefinedAcl(o.storage.objectAcl).Do() if err != nil { return err