From f2e238199b77145698a37a3b55638422be61ebf7 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Wed, 4 Mar 2015 01:54:35 -0800 Subject: [PATCH] Handle individual objects too --- pkg/storage/fs/fs.go | 52 +++++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/pkg/storage/fs/fs.go b/pkg/storage/fs/fs.go index 79de145ec..6089c19a0 100644 --- a/pkg/storage/fs/fs.go +++ b/pkg/storage/fs/fs.go @@ -385,38 +385,56 @@ func (storage *storage) ListObjects(bucket string, resources mstorage.BucketReso // TODO handle resources.Marker switch true { case resources.Delimiter != "" && resources.Prefix == "": - delimited := delimiter(name, resources.Delimiter) + delimitedName := delimiter(name, resources.Delimiter) switch true { - case delimited == file.Name(): + case delimitedName == "": metadata := mstorage.ObjectMetadata{ Bucket: bucket, Key: name, Created: file.ModTime(), Size: file.Size(), - ETag: bucket + "#" + name, + ETag: bucket + "#" + file.Name(), } metadataList = append(metadataList, metadata) - case delimited != "": - resources.CommonPrefixes = appendUniq(resources.CommonPrefixes, delimited) - } - case resources.Delimiter != "" && strings.HasPrefix(name, resources.Prefix): - _internal := strings.TrimPrefix(name, resources.Prefix) - delimited := delimiter(_internal, resources.Delimiter) - switch true { - case delimited == file.Name(): + case delimitedName == file.Name(): metadata := mstorage.ObjectMetadata{ Bucket: bucket, - Key: _internal, + Key: name, Created: file.ModTime(), Size: file.Size(), - ETag: bucket + "#" + name, + ETag: bucket + "#" + file.Name(), } metadataList = append(metadataList, metadata) - case delimited != "": - if delimited == resources.Delimiter { - resources.CommonPrefixes = appendUniq(resources.CommonPrefixes, resources.Prefix+delimited) + case delimitedName != "": + resources.CommonPrefixes = appendUniq(resources.CommonPrefixes, delimitedName) + } + case resources.Delimiter != "" && strings.HasPrefix(name, resources.Prefix): + trimmedName := strings.TrimPrefix(name, resources.Prefix) + delimitedName := delimiter(trimmedName, resources.Delimiter) + switch true { + case name == resources.Prefix: + metadata := mstorage.ObjectMetadata{ + Bucket: bucket, + Key: file.Name(), + Created: file.ModTime(), + Size: file.Size(), + ETag: bucket + "#" + file.Name(), + } + metadataList = append(metadataList, metadata) + case delimitedName == file.Name(): + metadata := mstorage.ObjectMetadata{ + Bucket: bucket, + Key: trimmedName, + Created: file.ModTime(), + Size: file.Size(), + ETag: bucket + "#" + file.Name(), + } + metadataList = append(metadataList, metadata) + case delimitedName != "": + if delimitedName == resources.Delimiter { + resources.CommonPrefixes = appendUniq(resources.CommonPrefixes, resources.Prefix+delimitedName) } else { - resources.CommonPrefixes = appendUniq(resources.CommonPrefixes, delimited) + resources.CommonPrefixes = appendUniq(resources.CommonPrefixes, delimitedName) } } case strings.HasPrefix(name, resources.Prefix):