aboutsummaryrefslogtreecommitdiff
path: root/weed/filer/filer_rename.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/filer/filer_rename.go')
-rw-r--r--weed/filer/filer_rename.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/weed/filer/filer_rename.go b/weed/filer/filer_rename.go
new file mode 100644
index 000000000..b6f0cf6de
--- /dev/null
+++ b/weed/filer/filer_rename.go
@@ -0,0 +1,30 @@
+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
+}