diff --git a/drivers/virtual/driver.go b/drivers/virtual/driver.go index 8775f06d..d5d37e6b 100644 --- a/drivers/virtual/driver.go +++ b/drivers/virtual/driver.go @@ -34,20 +34,10 @@ func (d *Virtual) GetAddition() driver.Additional { func (d *Virtual) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([]model.Obj, error) { var res []model.Obj for i := 0; i < d.NumFile; i++ { - res = append(res, &model.Object{ - Name: random.String(10), - Size: random.RangeInt64(d.MinFileSize, d.MaxFileSize), - IsFolder: false, - Modified: time.Now(), - }) + res = append(res, d.genObj(false)) } for i := 0; i < d.NumFolder; i++ { - res = append(res, &model.Object{ - Name: random.String(10), - Size: 0, - IsFolder: true, - Modified: time.Now(), - }) + res = append(res, d.genObj(true)) } return res, nil } @@ -78,28 +68,45 @@ func (d *Virtual) Link(ctx context.Context, file model.Obj, args model.LinkArgs) }, nil } -func (d *Virtual) MakeDir(ctx context.Context, parentDir model.Obj, dirName string) error { - return nil +func (d *Virtual) MakeDir(ctx context.Context, parentDir model.Obj, dirName string) (model.Obj, error) { + dir := &model.Object{ + Name: dirName, + Size: 0, + IsFolder: true, + Modified: time.Now(), + } + return dir, nil } -func (d *Virtual) Move(ctx context.Context, srcObj, dstDir model.Obj) error { - return nil +func (d *Virtual) Move(ctx context.Context, srcObj, dstDir model.Obj) (model.Obj, error) { + return srcObj, nil } -func (d *Virtual) Rename(ctx context.Context, srcObj model.Obj, newName string) error { - return nil +func (d *Virtual) Rename(ctx context.Context, srcObj model.Obj, newName string) (model.Obj, error) { + obj := &model.Object{ + Name: newName, + Size: srcObj.GetSize(), + IsFolder: srcObj.IsDir(), + Modified: time.Now(), + } + return obj, nil } -func (d *Virtual) Copy(ctx context.Context, srcObj, dstDir model.Obj) error { - return nil +func (d *Virtual) Copy(ctx context.Context, srcObj, dstDir model.Obj) (model.Obj, error) { + return srcObj, nil } func (d *Virtual) Remove(ctx context.Context, obj model.Obj) error { return nil } -func (d *Virtual) Put(ctx context.Context, dstDir model.Obj, stream model.FileStreamer, up driver.UpdateProgress) error { - return nil +func (d *Virtual) Put(ctx context.Context, dstDir model.Obj, stream model.FileStreamer, up driver.UpdateProgress) (model.Obj, error) { + file := &model.Object{ + Name: stream.GetName(), + Size: stream.GetSize(), + Modified: time.Now(), + } + return file, nil } var _ driver.Driver = (*Virtual)(nil) diff --git a/drivers/virtual/util.go b/drivers/virtual/util.go new file mode 100644 index 00000000..5ed8314c --- /dev/null +++ b/drivers/virtual/util.go @@ -0,0 +1,22 @@ +package virtual + +import ( + "time" + + "github.com/alist-org/alist/v3/internal/model" + "github.com/alist-org/alist/v3/pkg/utils/random" +) + +func (d *Virtual) genObj(dir bool) model.Obj { + obj := &model.Object{ + Name: random.String(10), + Size: 0, + IsFolder: true, + Modified: time.Now(), + } + if !dir { + obj.Size = random.RangeInt64(d.MinFileSize, d.MaxFileSize) + obj.IsFolder = false + } + return obj +}