Skip to content

Commit fecd62f

Browse files
committed
feat(aliyundrive_open): support get fileobj by path
1 parent 74bf9f6 commit fecd62f

File tree

4 files changed

+21
-32
lines changed

4 files changed

+21
-32
lines changed

drivers/115_open/driver.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ func (d *Open115) Link(ctx context.Context, file model.Obj, args model.LinkArgs)
131131
}, nil
132132
}
133133

134-
func (d *Open115) GetObjInfo(ctx context.Context, path string) (model.Obj, error) {
134+
func (d *Open115) Get(ctx context.Context, path string) (model.Obj, error) {
135135
if err := d.WaitLimit(ctx); err != nil {
136136
return nil, err
137137
}

drivers/aliyundrive_open/driver.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,22 @@ func (d *AliyundriveOpen) GetRoot(ctx context.Context) (model.Obj, error) {
8383
}, nil
8484
}
8585

86+
func (d *AliyundriveOpen) Get(ctx context.Context, path string) (model.Obj, error) {
87+
var resp File
88+
_, err := d.request(ctx, limiterLink, "/adrive/v1.0/openFile/get_by_path", http.MethodPost, func(req *resty.Request) {
89+
req.SetBody(base.Json{
90+
"drive_id": d.DriveId,
91+
"file_path": path,
92+
}).SetResult(&resp)
93+
})
94+
if err != nil {
95+
return nil, err
96+
}
97+
obj := fileToObj(resp)
98+
obj.Path = path
99+
return obj, nil
100+
}
101+
86102
func (d *AliyundriveOpen) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([]model.Obj, error) {
87103
files, err := d.getFiles(ctx, dir.GetID())
88104
if err != nil {

internal/driver/driver.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,6 @@ type Getter interface {
4747
Get(ctx context.Context, path string) (model.Obj, error)
4848
}
4949

50-
type GetObjInfo interface {
51-
// GetObjInfo get file info by path
52-
GetObjInfo(ctx context.Context, path string) (model.Obj, error)
53-
}
54-
5550
//type Writer interface {
5651
// Mkdir
5752
// Move

internal/op/fs.go

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
stderrors "errors"
66
stdpath "path"
77
"slices"
8-
"strings"
98
"time"
109

1110
"github.com/OpenListTeam/OpenList/v4/internal/driver"
@@ -258,32 +257,11 @@ func Link(ctx context.Context, storage driver.Driver, path string, args model.Li
258257
if storage.Config().CheckStatus && storage.GetStorage().Status != WORK {
259258
return nil, nil, errors.Errorf("storage not init: %s", storage.GetStorage().Status)
260259
}
261-
var (
262-
file model.Obj
263-
err error
264-
)
265-
// use cache directly
266-
dir, name := stdpath.Split(stdpath.Join(storage.GetStorage().MountPath, path))
267-
if cacheFiles, ok := listCache.Get(strings.TrimSuffix(dir, "/")); ok {
268-
for _, f := range cacheFiles {
269-
if f.GetName() == name {
270-
file = model.UnwrapObj(f)
271-
break
272-
}
273-
}
274-
} else {
275-
if g, ok := storage.(driver.GetObjInfo); ok {
276-
file, err = g.GetObjInfo(ctx, path)
277-
} else {
278-
file, err = GetUnwrap(ctx, storage, path)
279-
}
280-
}
281-
if file == nil {
282-
if err != nil {
283-
return nil, nil, errors.WithMessage(err, "failed to get file")
284-
}
285-
return nil, nil, errors.WithStack(errs.ObjectNotFound)
260+
file, err := GetUnwrap(ctx, storage, path)
261+
if err != nil {
262+
return nil, nil, errors.WithMessage(err, "failed to get file")
286263
}
264+
287265
if file.IsDir() {
288266
return nil, nil, errors.WithStack(errs.NotFile)
289267
}

0 commit comments

Comments
 (0)