diff options
| author | Fabian Ruff <fabian@progra.de> | 2018-09-03 12:18:15 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-09-03 12:18:15 +0200 |
| commit | 126e4fe15a604227693deb0c443e25a27751ec93 (patch) | |
| tree | 4cedb2b880d5a6a8b9908460a1f5dd07216c4725 /object.go | |
| parent | 56e3d1b71945877f116b87e7462fa96f427b0ecd (diff) | |
| download | go-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.
Diffstat (limited to 'object.go')
| -rw-r--r-- | object.go | 11 |
1 files changed, 2 insertions, 9 deletions
@@ -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))) } |
