From 126e4fe15a604227693deb0c443e25a27751ec93 Mon Sep 17 00:00:00 2001 From: Fabian Ruff Date: Mon, 3 Sep 2018 12:18:15 +0200 Subject: 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. --- object.go | 11 ++--------- 1 file 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))) } -- cgit v1.2.3