mirror of https://github.com/Xhofe/alist
				
				
				
			chore(virtual): implement the driver interface with result
							parent
							
								
									57eea4db17
								
							
						
					
					
						commit
						f0981a0c8d
					
				| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue