mirror of https://github.com/Xhofe/alist
fix: use `get_share_link_download_url` if can't `get_download_url` (close #1753)
parent
96d8a382e8
commit
5ac6a30c56
|
@ -93,6 +93,7 @@ func (d *AliyundriveShare) Link(ctx context.Context, file model.Obj, args model.
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var u string
|
||||
if e.Code != "" {
|
||||
if e.Code == "AccessTokenInvalid" {
|
||||
err = d.refreshToken()
|
||||
|
@ -100,14 +101,47 @@ func (d *AliyundriveShare) Link(ctx context.Context, file model.Obj, args model.
|
|||
return nil, err
|
||||
}
|
||||
return d.Link(ctx, file, args)
|
||||
} else if e.Code == "ForbiddenNoPermission.File" {
|
||||
data = utils.MergeMap(data, base.Json{
|
||||
// Only ten minutes valid
|
||||
"expire_sec": 600,
|
||||
"share_id": d.ShareId,
|
||||
})
|
||||
var resp ShareLinkResp
|
||||
var e2 ErrorResp
|
||||
_, err = base.RestyClient.R().
|
||||
SetError(&e2).SetBody(data).SetResult(&resp).
|
||||
SetHeader("content-type", "application/json").
|
||||
SetHeader("Authorization", "Bearer\t"+d.AccessToken).
|
||||
SetHeader("x-share-token", d.ShareToken).
|
||||
Post("https://api.aliyundrive.com/v2/file/get_share_link_download_url")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if e2.Code != "" {
|
||||
if e2.Code == "AccessTokenInvalid" || e2.Code == "ShareLinkTokenInvalid" {
|
||||
err = d.getShareToken()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return d.Link(ctx, file, args)
|
||||
} else {
|
||||
return nil, errors.New(e2.Code + ":" + e2.Message)
|
||||
}
|
||||
} else {
|
||||
u = resp.DownloadUrl
|
||||
}
|
||||
} else {
|
||||
return nil, errors.New(e.Code + ":" + e.Message)
|
||||
}
|
||||
return nil, errors.New(e.Message)
|
||||
} else {
|
||||
u = utils.Json.Get(res.Body(), "url").ToString()
|
||||
}
|
||||
return &model.Link{
|
||||
Header: http.Header{
|
||||
"Referer": []string{"https://www.aliyundrive.com/"},
|
||||
},
|
||||
URL: utils.Json.Get(res.Body(), "url").ToString(),
|
||||
URL: u,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
|
|
@ -50,8 +50,8 @@ func fileToObj(f File) *model.ObjThumb {
|
|||
}
|
||||
}
|
||||
|
||||
//type ShareLinkResp struct {
|
||||
// DownloadUrl string `json:"download_url"`
|
||||
// Url string `json:"url"`
|
||||
// Thumbnail string `json:"thumbnail"`
|
||||
//}
|
||||
type ShareLinkResp struct {
|
||||
DownloadUrl string `json:"download_url"`
|
||||
Url string `json:"url"`
|
||||
Thumbnail string `json:"thumbnail"`
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue