func (sto *s3Storage) ReceiveBlob(b blob.Ref, source io.Reader) (sr blob.SizedRef, err error) { slurper := newAmazonSlurper(b) defer slurper.Cleanup() size, err := io.Copy(slurper, source) if err != nil { return sr, err } err = sto.s3Client.PutObject(b.String(), sto.bucket, slurper.md5, size, slurper) if err != nil { return sr, err } b.SetHash(slurper.md5) return blob.SizedRef{Ref: b, Size: uint32(size)}, nil }