aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Ruff <fabian@progra.de>2018-09-03 12:18:15 +0200
committerGitHub <noreply@github.com>2018-09-03 12:18:15 +0200
commit126e4fe15a604227693deb0c443e25a27751ec93 (patch)
tree4cedb2b880d5a6a8b9908460a1f5dd07216c4725
parent56e3d1b71945877f116b87e7462fa96f427b0ecd (diff)
downloadgo-schwift-126e4fe15a604227693deb0c443e25a27751ec93.tar.gz
Cover more readers for automatic tag calculation
Not sure If I'm missing something but this seems more general (specifically it covers `*os.File` which doesn't have a `WriteTo` method). Note: This is untested. Just putting it up for discussion.
-rw-r--r--object.go11
1 files changed, 2 insertions, 9 deletions
diff --git a/object.go b/object.go
index 960a3a6..8669719 100644
--- a/object.go
+++ b/object.go
@@ -298,13 +298,6 @@ func tryComputeContentLength(content io.Reader) *uint64 {
return nil
}
-//This covers both bytes.Reader and strings.Reader in a way that is compatible
-//with earlier versions of Go that don't have strings.Reader yet.
-type likeBytesReader interface {
- io.WriterTo
- io.Seeker
-}
-
func tryComputeEtag(content io.Reader, headers ObjectHeaders) {
h := headers.Etag()
if h.Exists() {
@@ -319,11 +312,11 @@ func tryComputeEtag(content io.Reader, headers ObjectHeaders) {
//so this one is easy
sum := md5.Sum(r.Bytes())
h.Set(hex.EncodeToString(sum[:]))
- case likeBytesReader:
+ case io.ReadSeeker:
//bytes.Reader does not have such a method, but it is an io.Seeker, so we
//can read the entire thing and then seek back to where we started
hash := md5.New()
- n, _ := r.WriteTo(hash)
+ n, _ := io.Copy(hash, r)
r.Seek(-n, io.SeekCurrent)
h.Set(hex.EncodeToString(hash.Sum(nil)))
}