forked from TrueCloudLab/frostfs-s3-gw
[#657] Don't use <empty> to handle trailing slash
Signed-off-by: Denis Kirillov <denis@nspcc.ru>
This commit is contained in:
parent
9cd4ef1ac4
commit
5184ed66c6
1 changed files with 3 additions and 18 deletions
|
@ -75,7 +75,6 @@ const (
|
||||||
settingsFileName = "bucket-settings"
|
settingsFileName = "bucket-settings"
|
||||||
notifConfFileName = "bucket-notifications"
|
notifConfFileName = "bucket-notifications"
|
||||||
corsFilename = "bucket-cors"
|
corsFilename = "bucket-cors"
|
||||||
emptyFileName = "<empty>" // to handle trailing and leading slash in name
|
|
||||||
bucketTaggingFilename = "bucket-tagging"
|
bucketTaggingFilename = "bucket-tagging"
|
||||||
|
|
||||||
// versionTree -- ID of a tree with object versions.
|
// versionTree -- ID of a tree with object versions.
|
||||||
|
@ -150,10 +149,6 @@ func (n *TreeNode) Get(key string) (string, bool) {
|
||||||
|
|
||||||
func (n *TreeNode) FileName() (string, bool) {
|
func (n *TreeNode) FileName() (string, bool) {
|
||||||
value, ok := n.Meta[fileNameKV]
|
value, ok := n.Meta[fileNameKV]
|
||||||
if ok && value == emptyFileName {
|
|
||||||
value = ""
|
|
||||||
}
|
|
||||||
|
|
||||||
return value, ok
|
return value, ok
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -216,7 +211,7 @@ func newMultipartInfo(node NodeResponse) (*data.MultipartInfo, error) {
|
||||||
case uploadIDKV:
|
case uploadIDKV:
|
||||||
multipartInfo.UploadID = string(kv.GetValue())
|
multipartInfo.UploadID = string(kv.GetValue())
|
||||||
case fileNameKV:
|
case fileNameKV:
|
||||||
multipartInfo.Key = strings.TrimSuffix(string(kv.GetValue()), emptyFileName)
|
multipartInfo.Key = string(kv.GetValue())
|
||||||
case createdKV:
|
case createdKV:
|
||||||
if utcMilli, err := strconv.ParseInt(string(kv.GetValue()), 10, 64); err == nil {
|
if utcMilli, err := strconv.ParseInt(string(kv.GetValue()), 10, 64); err == nil {
|
||||||
multipartInfo.Created = time.UnixMilli(utcMilli)
|
multipartInfo.Created = time.UnixMilli(utcMilli)
|
||||||
|
@ -564,16 +559,9 @@ func (c *TreeClient) GetLatestVersion(ctx context.Context, cnrID cid.ID, objectN
|
||||||
return newNodeVersion(objectName, nodes[0])
|
return newNodeVersion(objectName, nodes[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
// pathFromName splits name by '/' and add an empty marker if name has trailing or leading slash.
|
// pathFromName splits name by '/'.
|
||||||
func pathFromName(objectName string) []string {
|
func pathFromName(objectName string) []string {
|
||||||
path := strings.Split(objectName, separator)
|
return strings.Split(objectName, separator)
|
||||||
if path[0] == "" {
|
|
||||||
path[0] = emptyFileName
|
|
||||||
}
|
|
||||||
if path[len(path)-1] == "" {
|
|
||||||
path[len(path)-1] = emptyFileName
|
|
||||||
}
|
|
||||||
return path
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *TreeClient) GetLatestVersionsByPrefix(ctx context.Context, cnrID cid.ID, prefix string) ([]*data.NodeVersion, error) {
|
func (c *TreeClient) GetLatestVersionsByPrefix(ctx context.Context, cnrID cid.ID, prefix string) ([]*data.NodeVersion, error) {
|
||||||
|
@ -583,9 +571,6 @@ func (c *TreeClient) GetLatestVersionsByPrefix(ctx context.Context, cnrID cid.ID
|
||||||
func (c *TreeClient) determinePrefixNode(ctx context.Context, cnrID cid.ID, treeID, prefix string) (uint64, string, error) {
|
func (c *TreeClient) determinePrefixNode(ctx context.Context, cnrID cid.ID, treeID, prefix string) (uint64, string, error) {
|
||||||
var rootID uint64
|
var rootID uint64
|
||||||
path := strings.Split(prefix, separator)
|
path := strings.Split(prefix, separator)
|
||||||
if len(path) > 1 && path[0] == "" {
|
|
||||||
path[0] = emptyFileName
|
|
||||||
}
|
|
||||||
tailPrefix := path[len(path)-1]
|
tailPrefix := path[len(path)-1]
|
||||||
|
|
||||||
if len(path) > 1 {
|
if len(path) > 1 {
|
||||||
|
|
Loading…
Reference in a new issue