[chore]: Bump github.com/minio/minio-go/v7 from 7.0.59 to 7.0.60 (#1992)

This commit is contained in:
dependabot[bot] 2023-07-21 14:22:17 +00:00 committed by GitHub
parent d53449ccb4
commit 83139989b5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 99 additions and 19 deletions

2
go.mod
View file

@ -36,7 +36,7 @@ require (
github.com/jackc/pgx/v5 v5.4.1 github.com/jackc/pgx/v5 v5.4.1
github.com/microcosm-cc/bluemonday v1.0.24 github.com/microcosm-cc/bluemonday v1.0.24
github.com/miekg/dns v1.1.55 github.com/miekg/dns v1.1.55
github.com/minio/minio-go/v7 v7.0.59 github.com/minio/minio-go/v7 v7.0.60
github.com/mitchellh/mapstructure v1.5.0 github.com/mitchellh/mapstructure v1.5.0
github.com/oklog/ulid v1.3.1 github.com/oklog/ulid v1.3.1
github.com/spf13/cobra v1.7.0 github.com/spf13/cobra v1.7.0

4
go.sum
View file

@ -450,8 +450,8 @@ github.com/miekg/dns v1.1.55 h1:GoQ4hpsj0nFLYe+bWiCToyrBEJXkQfOOIvFGFy0lEgo=
github.com/miekg/dns v1.1.55/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY= github.com/miekg/dns v1.1.55/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY=
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34= github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM= github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
github.com/minio/minio-go/v7 v7.0.59 h1:lxIXwsTIcQkYoEG25rUJbzpmSB/oWeVDmxFo/uWUUsw= github.com/minio/minio-go/v7 v7.0.60 h1:iHkrmWyHFs/eZiWc2F/5jAHtNBAFy+HjdhMX6FkkPWc=
github.com/minio/minio-go/v7 v7.0.59/go.mod h1:NUDy4A4oXPq1l2yK6LTSvCEzAMeIcoz9lcj5dbzSrRE= github.com/minio/minio-go/v7 v7.0.60/go.mod h1:NUDy4A4oXPq1l2yK6LTSvCEzAMeIcoz9lcj5dbzSrRE=
github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4= github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4=

View file

@ -220,6 +220,11 @@ type ObjectInfo struct {
ChecksumSHA1 string ChecksumSHA1 string
ChecksumSHA256 string ChecksumSHA256 string
Internal *struct {
K int // Data blocks
M int // Parity blocks
} `xml:"Internal"`
// Error // Error
Err error `json:"-"` Err error `json:"-"`
} }

View file

@ -97,7 +97,15 @@ func (c *Client) listObjectsV2(ctx context.Context, bucketName string, opts List
// Initiate list objects goroutine here. // Initiate list objects goroutine here.
go func(objectStatCh chan<- ObjectInfo) { go func(objectStatCh chan<- ObjectInfo) {
defer close(objectStatCh) defer func() {
if contextCanceled(ctx) {
objectStatCh <- ObjectInfo{
Err: ctx.Err(),
}
}
close(objectStatCh)
}()
// Save continuationToken for next request. // Save continuationToken for next request.
var continuationToken string var continuationToken string
for { for {
@ -304,7 +312,14 @@ func (c *Client) listObjects(ctx context.Context, bucketName string, opts ListOb
// Initiate list objects goroutine here. // Initiate list objects goroutine here.
go func(objectStatCh chan<- ObjectInfo) { go func(objectStatCh chan<- ObjectInfo) {
defer close(objectStatCh) defer func() {
if contextCanceled(ctx) {
objectStatCh <- ObjectInfo{
Err: ctx.Err(),
}
}
close(objectStatCh)
}()
marker := opts.StartAfter marker := opts.StartAfter
for { for {
@ -321,6 +336,7 @@ func (c *Client) listObjects(ctx context.Context, bucketName string, opts ListOb
for _, object := range result.Contents { for _, object := range result.Contents {
// Save the marker. // Save the marker.
marker = object.Key marker = object.Key
object.ETag = trimEtag(object.ETag)
select { select {
// Send object content. // Send object content.
case objectStatCh <- object: case objectStatCh <- object:
@ -393,7 +409,14 @@ func (c *Client) listObjectVersions(ctx context.Context, bucketName string, opts
// Initiate list objects goroutine here. // Initiate list objects goroutine here.
go func(resultCh chan<- ObjectInfo) { go func(resultCh chan<- ObjectInfo) {
defer close(resultCh) defer func() {
if contextCanceled(ctx) {
resultCh <- ObjectInfo{
Err: ctx.Err(),
}
}
close(resultCh)
}()
var ( var (
keyMarker = "" keyMarker = ""
@ -424,6 +447,7 @@ func (c *Client) listObjectVersions(ctx context.Context, bucketName string, opts
IsDeleteMarker: version.isDeleteMarker, IsDeleteMarker: version.isDeleteMarker,
UserTags: version.UserTags, UserTags: version.UserTags,
UserMetadata: version.UserMetadata, UserMetadata: version.UserMetadata,
Internal: version.Internal,
} }
select { select {
// Send object version info. // Send object version info.
@ -698,6 +722,10 @@ func (o *ListObjectsOptions) Set(key, value string) {
// for object := range api.ListObjects(ctx, "mytestbucket", minio.ListObjectsOptions{Prefix: "starthere", Recursive:true}) { // for object := range api.ListObjects(ctx, "mytestbucket", minio.ListObjectsOptions{Prefix: "starthere", Recursive:true}) {
// fmt.Println(object) // fmt.Println(object)
// } // }
//
// If caller cancels the context, then the last entry on the 'chan ObjectInfo' will be the context.Error()
// caller must drain the channel entirely and wait until channel is closed before proceeding, without
// waiting on the channel to be closed completely you might leak goroutines.
func (c *Client) ListObjects(ctx context.Context, bucketName string, opts ListObjectsOptions) <-chan ObjectInfo { func (c *Client) ListObjects(ctx context.Context, bucketName string, opts ListObjectsOptions) <-chan ObjectInfo {
if opts.WithVersions { if opts.WithVersions {
return c.listObjectVersions(ctx, bucketName, opts) return c.listObjectVersions(ctx, bucketName, opts)
@ -738,6 +766,16 @@ func (c *Client) ListIncompleteUploads(ctx context.Context, bucketName, objectPr
return c.listIncompleteUploads(ctx, bucketName, objectPrefix, recursive) return c.listIncompleteUploads(ctx, bucketName, objectPrefix, recursive)
} }
// contextCanceled returns whether a context is canceled.
func contextCanceled(ctx context.Context) bool {
select {
case <-ctx.Done():
return true
default:
return false
}
}
// listIncompleteUploads lists all incomplete uploads. // listIncompleteUploads lists all incomplete uploads.
func (c *Client) listIncompleteUploads(ctx context.Context, bucketName, objectPrefix string, recursive bool) <-chan ObjectMultipartInfo { func (c *Client) listIncompleteUploads(ctx context.Context, bucketName, objectPrefix string, recursive bool) <-chan ObjectMultipartInfo {
// Allocate channel for multipart uploads. // Allocate channel for multipart uploads.
@ -765,7 +803,15 @@ func (c *Client) listIncompleteUploads(ctx context.Context, bucketName, objectPr
return objectMultipartStatCh return objectMultipartStatCh
} }
go func(objectMultipartStatCh chan<- ObjectMultipartInfo) { go func(objectMultipartStatCh chan<- ObjectMultipartInfo) {
defer close(objectMultipartStatCh) defer func() {
if contextCanceled(ctx) {
objectMultipartStatCh <- ObjectMultipartInfo{
Err: ctx.Err(),
}
}
close(objectMultipartStatCh)
}()
// object and upload ID marker for future requests. // object and upload ID marker for future requests.
var objectMarker string var objectMarker string
var uploadIDMarker string var uploadIDMarker string

View file

@ -93,6 +93,11 @@ type Version struct {
// Only returned by MinIO servers. // Only returned by MinIO servers.
UserTags URLMap `json:"userTags,omitempty" xml:"UserTags"` UserTags URLMap `json:"userTags,omitempty" xml:"UserTags"`
Internal *struct {
K int // Data blocks
M int // Parity blocks
} `xml:"Internal"`
isDeleteMarker bool isDeleteMarker bool
} }

View file

@ -124,7 +124,7 @@ type Options struct {
// Global constants. // Global constants.
const ( const (
libraryName = "minio-go" libraryName = "minio-go"
libraryVersion = "v7.0.59" libraryVersion = "v7.0.60"
) )
// User Agent should always following the below style. // User Agent should always following the below style.

View file

@ -2471,7 +2471,8 @@ func testTrailingChecksums() {
PO minio.PutObjectOptions PO minio.PutObjectOptions
}{ }{
// Currently there is no way to override the checksum type. // Currently there is no way to override the checksum type.
{header: "x-amz-checksum-crc32c", {
header: "x-amz-checksum-crc32c",
hasher: crc32.New(crc32.MakeTable(crc32.Castagnoli)), hasher: crc32.New(crc32.MakeTable(crc32.Castagnoli)),
ChecksumCRC32C: "set", ChecksumCRC32C: "set",
PO: minio.PutObjectOptions{ PO: minio.PutObjectOptions{
@ -2481,7 +2482,8 @@ func testTrailingChecksums() {
PartSize: 5 << 20, PartSize: 5 << 20,
}, },
}, },
{header: "x-amz-checksum-crc32c", {
header: "x-amz-checksum-crc32c",
hasher: crc32.New(crc32.MakeTable(crc32.Castagnoli)), hasher: crc32.New(crc32.MakeTable(crc32.Castagnoli)),
ChecksumCRC32C: "set", ChecksumCRC32C: "set",
PO: minio.PutObjectOptions{ PO: minio.PutObjectOptions{
@ -2491,7 +2493,8 @@ func testTrailingChecksums() {
PartSize: 6_645_654, // Rather arbitrary size PartSize: 6_645_654, // Rather arbitrary size
}, },
}, },
{header: "x-amz-checksum-crc32c", {
header: "x-amz-checksum-crc32c",
hasher: crc32.New(crc32.MakeTable(crc32.Castagnoli)), hasher: crc32.New(crc32.MakeTable(crc32.Castagnoli)),
ChecksumCRC32C: "set", ChecksumCRC32C: "set",
PO: minio.PutObjectOptions{ PO: minio.PutObjectOptions{
@ -2501,7 +2504,8 @@ func testTrailingChecksums() {
PartSize: 5 << 20, PartSize: 5 << 20,
}, },
}, },
{header: "x-amz-checksum-crc32c", {
header: "x-amz-checksum-crc32c",
hasher: crc32.New(crc32.MakeTable(crc32.Castagnoli)), hasher: crc32.New(crc32.MakeTable(crc32.Castagnoli)),
ChecksumCRC32C: "set", ChecksumCRC32C: "set",
PO: minio.PutObjectOptions{ PO: minio.PutObjectOptions{

View file

@ -308,19 +308,27 @@ func (eDate ExpirationDate) MarshalXML(e *xml.Encoder, startElement xml.StartEle
} }
// ExpireDeleteMarker represents value of ExpiredObjectDeleteMarker field in Expiration XML element. // ExpireDeleteMarker represents value of ExpiredObjectDeleteMarker field in Expiration XML element.
type ExpireDeleteMarker bool type ExpireDeleteMarker ExpirationBoolean
// IsEnabled returns true if the auto delete-marker expiration is enabled
func (e ExpireDeleteMarker) IsEnabled() bool {
return bool(e)
}
// ExpirationBoolean represents an XML version of 'bool' type
type ExpirationBoolean bool
// MarshalXML encodes delete marker boolean into an XML form. // MarshalXML encodes delete marker boolean into an XML form.
func (b ExpireDeleteMarker) MarshalXML(e *xml.Encoder, startElement xml.StartElement) error { func (b ExpirationBoolean) MarshalXML(e *xml.Encoder, startElement xml.StartElement) error {
if !b { if !b {
return nil return nil
} }
type expireDeleteMarkerWrapper ExpireDeleteMarker type booleanWrapper ExpirationBoolean
return e.EncodeElement(expireDeleteMarkerWrapper(b), startElement) return e.EncodeElement(booleanWrapper(b), startElement)
} }
// IsEnabled returns true if the auto delete-marker expiration is enabled // IsEnabled returns true if the expiration boolean is enabled
func (b ExpireDeleteMarker) IsEnabled() bool { func (b ExpirationBoolean) IsEnabled() bool {
return bool(b) return bool(b)
} }
@ -330,6 +338,7 @@ type Expiration struct {
Date ExpirationDate `xml:"Date,omitempty" json:"Date,omitempty"` Date ExpirationDate `xml:"Date,omitempty" json:"Date,omitempty"`
Days ExpirationDays `xml:"Days,omitempty" json:"Days,omitempty"` Days ExpirationDays `xml:"Days,omitempty" json:"Days,omitempty"`
DeleteMarker ExpireDeleteMarker `xml:"ExpiredObjectDeleteMarker,omitempty" json:"ExpiredObjectDeleteMarker,omitempty"` DeleteMarker ExpireDeleteMarker `xml:"ExpiredObjectDeleteMarker,omitempty" json:"ExpiredObjectDeleteMarker,omitempty"`
DeleteAll ExpirationBoolean `xml:"ExpiredObjectAllVersions,omitempty" json:"ExpiredObjectAllVersions,omitempty"`
} }
// MarshalJSON customizes json encoding by removing empty day/date specification. // MarshalJSON customizes json encoding by removing empty day/date specification.
@ -338,10 +347,12 @@ func (e Expiration) MarshalJSON() ([]byte, error) {
Date *ExpirationDate `json:"Date,omitempty"` Date *ExpirationDate `json:"Date,omitempty"`
Days *ExpirationDays `json:"Days,omitempty"` Days *ExpirationDays `json:"Days,omitempty"`
DeleteMarker ExpireDeleteMarker `json:"ExpiredObjectDeleteMarker,omitempty"` DeleteMarker ExpireDeleteMarker `json:"ExpiredObjectDeleteMarker,omitempty"`
DeleteAll ExpirationBoolean `json:"ExpiredObjectAllVersions,omitempty"`
} }
newexp := expiration{ newexp := expiration{
DeleteMarker: e.DeleteMarker, DeleteMarker: e.DeleteMarker,
DeleteAll: e.DeleteAll,
} }
if !e.IsDaysNull() { if !e.IsDaysNull() {
newexp.Days = &e.Days newexp.Days = &e.Days

View file

@ -203,6 +203,10 @@ func (tags *tagSet) set(key, value string, failOnExist bool) error {
return nil return nil
} }
func (tags tagSet) count() int {
return len(tags.tagMap)
}
func (tags tagSet) toMap() map[string]string { func (tags tagSet) toMap() map[string]string {
m := make(map[string]string, len(tags.tagMap)) m := make(map[string]string, len(tags.tagMap))
for key, value := range tags.tagMap { for key, value := range tags.tagMap {
@ -279,6 +283,11 @@ func (tags *Tags) Set(key, value string) error {
return tags.TagSet.set(key, value, false) return tags.TagSet.set(key, value, false)
} }
// Count - return number of tags accounted for
func (tags Tags) Count() int {
return tags.TagSet.count()
}
// ToMap returns copy of tags. // ToMap returns copy of tags.
func (tags Tags) ToMap() map[string]string { func (tags Tags) ToMap() map[string]string {
return tags.TagSet.toMap() return tags.TagSet.toMap()

2
vendor/modules.txt vendored
View file

@ -386,7 +386,7 @@ github.com/miekg/dns
# github.com/minio/md5-simd v1.1.2 # github.com/minio/md5-simd v1.1.2
## explicit; go 1.14 ## explicit; go 1.14
github.com/minio/md5-simd github.com/minio/md5-simd
# github.com/minio/minio-go/v7 v7.0.59 # github.com/minio/minio-go/v7 v7.0.60
## explicit; go 1.17 ## explicit; go 1.17
github.com/minio/minio-go/v7 github.com/minio/minio-go/v7
github.com/minio/minio-go/v7/pkg/credentials github.com/minio/minio-go/v7/pkg/credentials