mirror of
https://github.com/OpenListTeam/OpenList.git
synced 2026-06-04 20:30:05 +08:00
fix(fs): improve error handling in op.Get (#1323)
This commit is contained in:
@@ -250,7 +250,7 @@ func (d *Alias) MakeDir(ctx context.Context, parentDir model.Obj, dirName string
|
||||
}
|
||||
return err
|
||||
}
|
||||
if errs.IsNotImplement(err) {
|
||||
if errs.IsNotImplementError(err) {
|
||||
return errors.New("same-name dirs cannot make sub-dir")
|
||||
}
|
||||
return err
|
||||
@@ -261,14 +261,14 @@ func (d *Alias) Move(ctx context.Context, srcObj, dstDir model.Obj) error {
|
||||
return errs.PermissionDenied
|
||||
}
|
||||
srcPath, err := d.getReqPath(ctx, srcObj, false)
|
||||
if errs.IsNotImplement(err) {
|
||||
if errs.IsNotImplementError(err) {
|
||||
return errors.New("same-name files cannot be moved")
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
dstPath, err := d.getReqPath(ctx, dstDir, true)
|
||||
if errs.IsNotImplement(err) {
|
||||
if errs.IsNotImplementError(err) {
|
||||
return errors.New("same-name dirs cannot be moved to")
|
||||
}
|
||||
if err != nil {
|
||||
@@ -296,7 +296,7 @@ func (d *Alias) Rename(ctx context.Context, srcObj model.Obj, newName string) er
|
||||
}
|
||||
return err
|
||||
}
|
||||
if errs.IsNotImplement(err) {
|
||||
if errs.IsNotImplementError(err) {
|
||||
return errors.New("same-name files cannot be Rename")
|
||||
}
|
||||
return err
|
||||
@@ -307,14 +307,14 @@ func (d *Alias) Copy(ctx context.Context, srcObj, dstDir model.Obj) error {
|
||||
return errs.PermissionDenied
|
||||
}
|
||||
srcPath, err := d.getReqPath(ctx, srcObj, false)
|
||||
if errs.IsNotImplement(err) {
|
||||
if errs.IsNotImplementError(err) {
|
||||
return errors.New("same-name files cannot be copied")
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
dstPath, err := d.getReqPath(ctx, dstDir, true)
|
||||
if errs.IsNotImplement(err) {
|
||||
if errs.IsNotImplementError(err) {
|
||||
return errors.New("same-name dirs cannot be copied to")
|
||||
}
|
||||
if err != nil {
|
||||
@@ -348,7 +348,7 @@ func (d *Alias) Remove(ctx context.Context, obj model.Obj) error {
|
||||
}
|
||||
return err
|
||||
}
|
||||
if errs.IsNotImplement(err) {
|
||||
if errs.IsNotImplementError(err) {
|
||||
return errors.New("same-name files cannot be Delete")
|
||||
}
|
||||
return err
|
||||
@@ -392,7 +392,7 @@ func (d *Alias) Put(ctx context.Context, dstDir model.Obj, s model.FileStreamer,
|
||||
return err
|
||||
}
|
||||
}
|
||||
if errs.IsNotImplement(err) {
|
||||
if errs.IsNotImplementError(err) {
|
||||
return errors.New("same-name dirs cannot be Put")
|
||||
}
|
||||
return err
|
||||
@@ -409,7 +409,7 @@ func (d *Alias) PutURL(ctx context.Context, dstDir model.Obj, name, url string)
|
||||
}
|
||||
return err
|
||||
}
|
||||
if errs.IsNotImplement(err) {
|
||||
if errs.IsNotImplementError(err) {
|
||||
return errors.New("same-name files cannot offline download")
|
||||
}
|
||||
return err
|
||||
@@ -482,14 +482,14 @@ func (d *Alias) ArchiveDecompress(ctx context.Context, srcObj, dstDir model.Obj,
|
||||
return errs.PermissionDenied
|
||||
}
|
||||
srcPath, err := d.getReqPath(ctx, srcObj, false)
|
||||
if errs.IsNotImplement(err) {
|
||||
if errs.IsNotImplementError(err) {
|
||||
return errors.New("same-name files cannot be decompressed")
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
dstPath, err := d.getReqPath(ctx, dstDir, true)
|
||||
if errs.IsNotImplement(err) {
|
||||
if errs.IsNotImplementError(err) {
|
||||
return errors.New("same-name dirs cannot be decompressed to")
|
||||
}
|
||||
if err != nil {
|
||||
|
||||
@@ -108,7 +108,7 @@ func (d *Strm) Get(ctx context.Context, path string) (model.Obj, error) {
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
// fs.Get 没报错,说明不是strm生成的路径,需要直接返回
|
||||
// fs.Get 没报错,说明不是strm驱动映射的路径,需要直接返回
|
||||
size := int64(0)
|
||||
if !obj.IsDir() {
|
||||
size = obj.GetSize()
|
||||
@@ -123,6 +123,11 @@ func (d *Strm) Get(ctx context.Context, path string) (model.Obj, error) {
|
||||
HashInfo: obj.GetHash(),
|
||||
}, nil
|
||||
}
|
||||
if strings.HasSuffix(path, ".strm") {
|
||||
// 上面fs.Get都没找到且后缀为.strm
|
||||
// 返回errs.NotSupport使得op.Get尝试从op.List中查找
|
||||
return nil, errs.NotSupport
|
||||
}
|
||||
return nil, errs.ObjectNotFound
|
||||
}
|
||||
|
||||
|
||||
@@ -42,6 +42,6 @@ func IsNotFoundError(err error) bool {
|
||||
func IsNotSupportError(err error) bool {
|
||||
return errors.Is(pkgerr.Cause(err), NotSupport)
|
||||
}
|
||||
func IsNotImplement(err error) bool {
|
||||
func IsNotImplementError(err error) bool {
|
||||
return errors.Is(pkgerr.Cause(err), NotImplement)
|
||||
}
|
||||
|
||||
@@ -184,7 +184,7 @@ func Get(ctx context.Context, storage driver.Driver, path string) (model.Obj, er
|
||||
if err == nil {
|
||||
return model.WrapObjName(obj), nil
|
||||
}
|
||||
if !errs.IsNotImplement(err) {
|
||||
if !errs.IsNotImplementError(err) && !errs.IsNotSupportError(err) {
|
||||
return nil, errors.WithMessage(err, "failed to get obj")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user