summaryrefslogtreecommitdiff
path: root/vendor/github.com/minio/minio-go/v7/checksum.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/minio/minio-go/v7/checksum.go')
-rw-r--r--vendor/github.com/minio/minio-go/v7/checksum.go45
1 files changed, 43 insertions, 2 deletions
diff --git a/vendor/github.com/minio/minio-go/v7/checksum.go b/vendor/github.com/minio/minio-go/v7/checksum.go
index c7456cda2..5c24bf64a 100644
--- a/vendor/github.com/minio/minio-go/v7/checksum.go
+++ b/vendor/github.com/minio/minio-go/v7/checksum.go
@@ -34,6 +34,43 @@ import (
"github.com/minio/crc64nvme"
)
+// ChecksumMode contains information about the checksum mode on the object
+type ChecksumMode uint32
+
+const (
+ // ChecksumFullObjectMode Full object checksum `csumCombine(csum1, csum2...)...), csumN...)`
+ ChecksumFullObjectMode ChecksumMode = 1 << iota
+
+ // ChecksumCompositeMode Composite checksum `csum([csum1 + csum2 ... + csumN])`
+ ChecksumCompositeMode
+
+ // Keep after all valid checksums
+ checksumLastMode
+
+ // checksumModeMask is a mask for valid checksum mode types.
+ checksumModeMask = checksumLastMode - 1
+)
+
+// Is returns if c is all of t.
+func (c ChecksumMode) Is(t ChecksumMode) bool {
+ return c&t == t
+}
+
+// Key returns the header key.
+func (c ChecksumMode) Key() string {
+ return amzChecksumMode
+}
+
+func (c ChecksumMode) String() string {
+ switch c & checksumModeMask {
+ case ChecksumFullObjectMode:
+ return "FULL_OBJECT"
+ case ChecksumCompositeMode:
+ return "COMPOSITE"
+ }
+ return ""
+}
+
// ChecksumType contains information about the checksum type.
type ChecksumType uint32
@@ -75,6 +112,7 @@ const (
amzChecksumSHA1 = "x-amz-checksum-sha1"
amzChecksumSHA256 = "x-amz-checksum-sha256"
amzChecksumCRC64NVME = "x-amz-checksum-crc64nvme"
+ amzChecksumMode = "x-amz-checksum-type"
)
// Base returns the base type, without modifiers.
@@ -397,7 +435,7 @@ func addAutoChecksumHeaders(opts *PutObjectOptions) {
}
opts.UserMetadata["X-Amz-Checksum-Algorithm"] = opts.AutoChecksum.String()
if opts.AutoChecksum.FullObjectRequested() {
- opts.UserMetadata["X-Amz-Checksum-Type"] = "FULL_OBJECT"
+ opts.UserMetadata[amzChecksumMode] = ChecksumFullObjectMode.String()
}
}
@@ -414,7 +452,10 @@ func applyAutoChecksum(opts *PutObjectOptions, allParts []ObjectPart) {
} else if opts.AutoChecksum.CanMergeCRC() {
crc, err := opts.AutoChecksum.FullObjectChecksum(allParts)
if err == nil {
- opts.UserMetadata = map[string]string{opts.AutoChecksum.KeyCapitalized(): crc.Encoded(), "X-Amz-Checksum-Type": "FULL_OBJECT"}
+ opts.UserMetadata = map[string]string{
+ opts.AutoChecksum.KeyCapitalized(): crc.Encoded(),
+ amzChecksumMode: ChecksumFullObjectMode.String(),
+ }
}
}
}