Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions drivers/123_open/driver.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ func (d *Open123) Link(ctx context.Context, file model.Obj, args model.LinkArgs)
}, nil
}

res, err := d.getDownloadInfo(fileId)
res, err := d.GetDownloadInfo(fileId)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -138,7 +138,7 @@ func (d *Open123) Copy(ctx context.Context, srcObj, dstDir model.Obj) error {
return fmt.Errorf("parse parentFileID error: %v", err)
}
etag := srcObj.(File).Etag
createResp, err := d.create(parentFileId, srcObj.GetName(), etag, srcObj.GetSize(), 2, false)
createResp, err := d.Create(parentFileId, srcObj.GetName(), etag, srcObj.GetSize(), 2, false)
if err != nil {
return err
}
Expand Down Expand Up @@ -170,7 +170,7 @@ func (d *Open123) Put(ctx context.Context, dstDir model.Obj, file model.FileStre
return nil, err
}
}
createResp, err := d.create(parentFileId, file.GetName(), etag, file.GetSize(), 2, false)
createResp, err := d.Create(parentFileId, file.GetName(), etag, file.GetSize(), 2, false)
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion drivers/123_open/upload.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import (
)

// 创建文件 V2
func (d *Open123) create(parentFileID int64, filename string, etag string, size int64, duplicate int, containDir bool) (*UploadCreateResp, error) {
func (d *Open123) Create(parentFileID int64, filename string, etag string, size int64, duplicate int, containDir bool) (*UploadCreateResp, error) {
var resp UploadCreateResp
_, err := d.Request(UploadCreate, http.MethodPost, func(req *resty.Request) {
req.SetBody(base.Json{
Expand Down
2 changes: 1 addition & 1 deletion drivers/123_open/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ func (d *Open123) getFiles(parentFileId int64, limit int, lastFileId int64) (*Fi
return &resp, nil
}

func (d *Open123) getDownloadInfo(fileId int64) (*DownloadInfoResp, error) {
func (d *Open123) GetDownloadInfo(fileId int64) (*DownloadInfoResp, error) {
var resp DownloadInfoResp

_, err := d.Request(DownloadInfo, http.MethodGet, func(req *resty.Request) {
Expand Down
27 changes: 24 additions & 3 deletions drivers/123_share/driver.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"golang.org/x/time/rate"

_123 "github.com/OpenListTeam/OpenList/v4/drivers/123"
_123_open "github.com/OpenListTeam/OpenList/v4/drivers/123_open"
"github.com/OpenListTeam/OpenList/v4/drivers/base"
"github.com/OpenListTeam/OpenList/v4/internal/driver"
"github.com/OpenListTeam/OpenList/v4/internal/errs"
Expand All @@ -26,6 +27,7 @@ type Pan123Share struct {
Addition
apiRateLimit sync.Map
ref *_123.Pan123
refOpen *_123_open.Open123
}

func (d *Pan123Share) Config() driver.Config {
Expand All @@ -43,12 +45,14 @@ func (d *Pan123Share) Init(ctx context.Context) error {
}

func (d *Pan123Share) InitReference(storage driver.Driver) error {
refStorage, ok := storage.(*_123.Pan123)
if ok {
if refStorage, ok := storage.(*_123.Pan123); ok {
d.ref = refStorage
return nil
} else if refStorage, ok := storage.(*_123_open.Open123); ok {
d.refOpen = refStorage
return nil
}
return fmt.Errorf("ref: storage is not 123Pan")
return fmt.Errorf("ref: storage is not 123Pan or 123Open")
}

func (d *Pan123Share) Drop(ctx context.Context) error {
Expand All @@ -70,6 +74,23 @@ func (d *Pan123Share) List(ctx context.Context, dir model.Obj, args model.ListAr
func (d *Pan123Share) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*model.Link, error) {
// TODO return link of file, required
if f, ok := file.(File); ok {
if d.refOpen != nil {
// 1. 转存到缓存文件夹
s, err := d.refOpen.Create(d.Addition.TempDirID, f.FileName, f.Etag, f.Size, 2, false)
if err != nil {
return nil, err
}
if !s.Data.Reuse {
return nil, fmt.Errorf("failed to transfer share file")
}
// 2. 获取直链
res, err := d.refOpen.GetDownloadInfo(s.Data.FileID)
if err != nil {
return nil, err
}
exp := 5 * time.Minute
return &model.Link{URL: res.Data.DownloadUrl, Expiration: &exp}, nil
}
data := base.Json{
"shareKey": d.ShareKey,
"SharePwd": d.SharePwd,
Expand Down
1 change: 1 addition & 0 deletions drivers/123_share/meta.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ type Addition struct {
//OrderBy string `json:"order_by" type:"select" options:"file_name,size,update_at" default:"file_name"`
//OrderDirection string `json:"order_direction" type:"select" options:"asc,desc" default:"asc"`
AccessToken string `json:"accesstoken" type:"text"`
TempDirID int64 `json:"temp_dir_id" type:"number" default:"0" help:"Directory ID for transfer share files. (123Open Only)"`
}

var config = driver.Config{
Expand Down