mirror of
https://github.com/minio/minio.git
synced 2025-03-02 23:09:13 -05:00
Provide ETag with sha256Sum of input object data
This commit is contained in:
parent
5b67da7d96
commit
d44404dd81
@ -18,10 +18,13 @@ package storage
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"crypto/sha256"
|
||||
)
|
||||
|
||||
type Storage struct {
|
||||
@ -49,6 +52,7 @@ type ObjectMetadata struct {
|
||||
Key string
|
||||
SecCreated int64
|
||||
Size int
|
||||
ETag string
|
||||
}
|
||||
|
||||
func isValidBucket(bucket string) bool {
|
||||
@ -108,10 +112,13 @@ func (storage *Storage) StoreObject(bucket string, key string, data io.Reader) e
|
||||
var bytesBuffer bytes.Buffer
|
||||
newObject := storedObject{}
|
||||
if _, ok := io.Copy(&bytesBuffer, data); ok == nil {
|
||||
size := bytesBuffer.Len()
|
||||
etag := fmt.Sprintf("%x", sha256.Sum256(bytesBuffer.Bytes()))
|
||||
newObject.metadata = ObjectMetadata{
|
||||
Key: key,
|
||||
SecCreated: time.Now().Unix(),
|
||||
Size: len(bytesBuffer.Bytes()),
|
||||
Size: size,
|
||||
ETag: etag,
|
||||
}
|
||||
newObject.data = bytesBuffer.Bytes()
|
||||
}
|
||||
|
@ -43,6 +43,7 @@ func HttpHandler(storage *mstorage.Storage) http.Handler {
|
||||
}
|
||||
mux.HandleFunc("/", api.listBucketsHandler).Methods("GET")
|
||||
mux.HandleFunc("/{bucket}", api.putBucketHandler).Methods("PUT")
|
||||
mux.HandleFunc("/{bucket}", api.listObjectsHandler).Methods("GET")
|
||||
mux.HandleFunc("/{bucket}/", api.listObjectsHandler).Methods("GET")
|
||||
mux.HandleFunc("/{bucket}/{object:.*}", api.getObjectHandler).Methods("GET")
|
||||
mux.HandleFunc("/{bucket}/{object:.*}", api.putObjectHandler).Methods("PUT")
|
||||
@ -200,7 +201,7 @@ func generateObjectsListResult(bucket string, objects []mstorage.ObjectMetadata)
|
||||
content := Content{
|
||||
Key: object.Key,
|
||||
LastModified: formatDate(object.SecCreated),
|
||||
ETag: object.Key,
|
||||
ETag: object.ETag,
|
||||
Size: object.Size,
|
||||
StorageClass: "STANDARD",
|
||||
Owner: owner,
|
||||
|
@ -47,7 +47,7 @@ func TestMinioApi(t *testing.T) {
|
||||
Owner: owner,
|
||||
},
|
||||
}
|
||||
data := &ListResponse{
|
||||
data := &ObjectListResponse{
|
||||
Name: "name",
|
||||
Contents: contents,
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user