44 "context"
55 "fmt"
66 "net/http"
7+ stdpath "path"
8+ "slices"
79 "strconv"
810 "strings"
911 "time"
@@ -23,8 +25,9 @@ import (
2325type Open115 struct {
2426 model.Storage
2527 Addition
26- client * sdk.Client
27- limiter * rate.Limiter
28+ client * sdk.Client
29+ limiter * rate.Limiter
30+ parentPath string
2831}
2932
3033func (d * Open115 ) Config () driver.Config {
@@ -59,6 +62,28 @@ func (d *Open115) Init(ctx context.Context) error {
5962 d .PageSize = 1150
6063 }
6164
65+ // add parent path
66+ d .parentPath = "/"
67+ if d .GetRootId () != d .Config ().DefaultRoot {
68+ folderInfo , err := d .client .GetFolderInfo (ctx , d .GetRootId ())
69+ if err != nil {
70+ return err
71+ }
72+
73+ if folderInfo .FileID != d .Config ().DefaultRoot {
74+ d .parentPath = stdpath .Join (d .parentPath , folderInfo .FileName )
75+ }
76+
77+ parentPaths := folderInfo .Paths
78+ slices .Reverse (parentPaths )
79+ for _ , parentPathInfo := range parentPaths {
80+ if parentPathInfo .FileID == d .Config ().DefaultRoot {
81+ d .parentPath = stdpath .Join ("/" , d .parentPath )
82+ } else {
83+ d .parentPath = stdpath .Join ("/" , parentPathInfo .FileName , d .parentPath )
84+ }
85+ }
86+ }
6287 return nil
6388}
6489
@@ -137,6 +162,24 @@ func (d *Open115) Link(ctx context.Context, file model.Obj, args model.LinkArgs)
137162 }, nil
138163}
139164
165+ func (d * Open115 ) Get (ctx context.Context , path string ) (model.Obj , error ) {
166+ if err := d .WaitLimit (ctx ); err != nil {
167+ return nil , err
168+ }
169+ path = stdpath .Join (d .parentPath , path )
170+ resp , err := d .client .GetFolderInfoByPath (ctx , path )
171+ if err != nil {
172+ return nil , err
173+ }
174+ return & Obj {
175+ Fid : resp .FileID ,
176+ Fn : resp .FileName ,
177+ Fc : resp .FileCategory ,
178+ Sha1 : resp .Sha1 ,
179+ Pc : resp .PickCode ,
180+ }, nil
181+ }
182+
140183func (d * Open115 ) MakeDir (ctx context.Context , parentDir model.Obj , dirName string ) (model.Obj , error ) {
141184 if err := d .WaitLimit (ctx ); err != nil {
142185 return nil , err
0 commit comments