mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-12-23 00:27:55 +08:00
31 lines
739 B
Go
31 lines
739 B
Go
|
package filer
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"github.com/chrislusf/seaweedfs/weed/util"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
func (f *Filer) CanRename(source, target util.FullPath) error {
|
||
|
sourceBucket := f.DetectBucket(source)
|
||
|
targetBucket := f.DetectBucket(target)
|
||
|
if sourceBucket != targetBucket {
|
||
|
return fmt.Errorf("can not move across collection %s => %s", sourceBucket, targetBucket)
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (f *Filer) DetectBucket(source util.FullPath) (bucket string) {
|
||
|
if strings.HasPrefix(string(source), f.DirBucketsPath+"/") {
|
||
|
bucketAndObjectKey := string(source)[len(f.DirBucketsPath)+1:]
|
||
|
t := strings.Index(bucketAndObjectKey, "/")
|
||
|
if t < 0 {
|
||
|
bucket = bucketAndObjectKey
|
||
|
}
|
||
|
if t > 0 {
|
||
|
bucket = bucketAndObjectKey[:t]
|
||
|
}
|
||
|
}
|
||
|
return bucket
|
||
|
}
|