Skip to content
42 changes: 42 additions & 0 deletions drivers/115_open/driver.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import (
"context"
"fmt"
"net/http"
stdpath "path"
"slices"
"strconv"
"strings"
"time"
Expand Down Expand Up @@ -131,6 +133,46 @@ func (d *Open115) Link(ctx context.Context, file model.Obj, args model.LinkArgs)
}, nil
}

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

// add parent path
if d.GetRootId() != d.Config().DefaultRoot {
folderInfo, err := d.client.GetFolderInfo(ctx, d.GetRootId())
if err != nil {
return nil, err
}

if folderInfo.FileID != d.Config().DefaultRoot {
path = stdpath.Join(folderInfo.FileName, path)
}

parentPaths := folderInfo.Paths
slices.Reverse(parentPaths)
for _, parentPathInfo := range parentPaths {
if parentPathInfo.FileID == d.Config().DefaultRoot {
path = stdpath.Join("/", path)
} else {
path = stdpath.Join("/", parentPathInfo.FileName, path)
}
}
}
Comment thread
sevxn007 marked this conversation as resolved.
Outdated

resp, err := d.client.GetFolderInfoByPath(ctx, path)
if err != nil {
return nil, err
}
return &Obj{
Fid: resp.FileID,
Fn: resp.FileName,
Fc: resp.FileCategory,
Sha1: resp.Sha1,
Pc: resp.PickCode,
}, nil
}

func (d *Open115) MakeDir(ctx context.Context, parentDir model.Obj, dirName string) (model.Obj, error) {
if err := d.WaitLimit(ctx); err != nil {
return nil, err
Expand Down