mirror of
https://github.com/minio/minio.git
synced 2025-01-24 05:03:16 -05:00
Filter out internal object prefix during listing (#4435)
We use ZZZZ-Minio/ prefix internally in our GCS gateway which should be filtered out in the response to ListObjects.
This commit is contained in:
parent
9bd0eb1a9e
commit
8085ba4494
@ -44,6 +44,11 @@ const (
|
|||||||
ZZZZMinioPrefix = "ZZZZ-Minio"
|
ZZZZMinioPrefix = "ZZZZ-Minio"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Check if object prefix is "ZZZZ_Minio".
|
||||||
|
func isGCSPrefix(prefix string) bool {
|
||||||
|
return strings.TrimSuffix(prefix, slashSeparator) == ZZZZMinioPrefix
|
||||||
|
}
|
||||||
|
|
||||||
// Convert Minio errors to minio object layer errors.
|
// Convert Minio errors to minio object layer errors.
|
||||||
func gcsToObjectError(err error, params ...string) error {
|
func gcsToObjectError(err error, params ...string) error {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
@ -325,7 +330,7 @@ func (l *gcsGateway) ListObjects(bucket string, prefix string, marker string, de
|
|||||||
|
|
||||||
attrs, _ := it.Next()
|
attrs, _ := it.Next()
|
||||||
if attrs == nil {
|
if attrs == nil {
|
||||||
} else if attrs.Prefix == ZZZZMinioPrefix {
|
} else if isGCSPrefix(attrs.Prefix) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -342,7 +347,7 @@ func (l *gcsGateway) ListObjects(bucket string, prefix string, marker string, de
|
|||||||
|
|
||||||
nextMarker = toGCSPageToken(attrs.Name)
|
nextMarker = toGCSPageToken(attrs.Name)
|
||||||
|
|
||||||
if attrs.Prefix == ZZZZMinioPrefix {
|
if isGCSPrefix(attrs.Prefix) {
|
||||||
// we don't return our metadata prefix
|
// we don't return our metadata prefix
|
||||||
continue
|
continue
|
||||||
} else if attrs.Prefix != "" {
|
} else if attrs.Prefix != "" {
|
||||||
|
@ -129,3 +129,38 @@ func TestValidGCSProjectID(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test for isGCSPrefix
|
||||||
|
func TestIsGCSPrefix(t *testing.T) {
|
||||||
|
testCases := []struct {
|
||||||
|
prefix string
|
||||||
|
expectedRes bool
|
||||||
|
}{
|
||||||
|
// Regular prefix without a trailing slash
|
||||||
|
{
|
||||||
|
prefix: "hello",
|
||||||
|
expectedRes: false,
|
||||||
|
},
|
||||||
|
// Regular prefix with a trailing slash
|
||||||
|
{
|
||||||
|
prefix: "hello/",
|
||||||
|
expectedRes: false,
|
||||||
|
},
|
||||||
|
// GCS prefix without a trailing slash
|
||||||
|
{
|
||||||
|
prefix: ZZZZMinioPrefix,
|
||||||
|
expectedRes: true,
|
||||||
|
},
|
||||||
|
// GCS prefix with a trailing slash
|
||||||
|
{
|
||||||
|
prefix: ZZZZMinioPrefix + "/",
|
||||||
|
expectedRes: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, tc := range testCases {
|
||||||
|
if actualRes := isGCSPrefix(tc.prefix); actualRes != tc.expectedRes {
|
||||||
|
t.Errorf("%d: Expected isGCSPrefix to return %v but got %v", i, tc.expectedRes, actualRes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user