fix(aliyundrive_open): increase limit interval (close #4851)

pull/4860/head
Andy Hsu 2023-07-27 18:26:11 +08:00
parent 4afa822bec
commit 2e23ea68d4
2 changed files with 13 additions and 7 deletions

View File

@ -39,8 +39,8 @@ func (d *AliyundriveOpen) Init(ctx context.Context) error {
return err return err
} }
d.DriveId = utils.Json.Get(res, "default_drive_id").ToString() d.DriveId = utils.Json.Get(res, "default_drive_id").ToString()
d.limitList = utils.LimitRateCtx(d.list, time.Second/4) d.limitList = utils.LimitRateCtx(d.list, time.Second/3)
d.limitLink = utils.LimitRateCtx(d.link, time.Second) d.limitLink = utils.LimitRateCtx(d.link, time.Second+time.Millisecond*2)
return nil return nil
} }

View File

@ -10,6 +10,7 @@ import (
"github.com/alist-org/alist/v3/internal/op" "github.com/alist-org/alist/v3/internal/op"
"github.com/alist-org/alist/v3/pkg/utils" "github.com/alist-org/alist/v3/pkg/utils"
"github.com/go-resty/resty/v2" "github.com/go-resty/resty/v2"
log "github.com/sirupsen/logrus"
) )
// do others that not defined in Driver interface // do others that not defined in Driver interface
@ -19,9 +20,9 @@ func (d *AliyundriveOpen) refreshToken() error {
if d.OauthTokenURL != "" && d.ClientID == "" { if d.OauthTokenURL != "" && d.ClientID == "" {
url = d.OauthTokenURL url = d.OauthTokenURL
} }
var resp base.TokenResp //var resp base.TokenResp
var e ErrResp var e ErrResp
_, err := base.RestyClient.R(). res, err := base.RestyClient.R().
ForceContentType("application/json"). ForceContentType("application/json").
SetBody(base.Json{ SetBody(base.Json{
"client_id": d.ClientID, "client_id": d.ClientID,
@ -29,19 +30,21 @@ func (d *AliyundriveOpen) refreshToken() error {
"grant_type": "refresh_token", "grant_type": "refresh_token",
"refresh_token": d.RefreshToken, "refresh_token": d.RefreshToken,
}). }).
SetResult(&resp). //SetResult(&resp).
SetError(&e). SetError(&e).
Post(url) Post(url)
if err != nil { if err != nil {
return err return err
} }
log.Debugf("[ali_open] refresh token response: %s", res.String())
if e.Code != "" { if e.Code != "" {
return fmt.Errorf("failed to refresh token: %s", e.Message) return fmt.Errorf("failed to refresh token: %s", e.Message)
} }
if resp.RefreshToken == "" { refresh, access := utils.Json.Get(res.Body(), "refresh_token").ToString(), utils.Json.Get(res.Body(), "access_token").ToString()
if refresh == "" {
return errors.New("failed to refresh token: refresh token is empty") return errors.New("failed to refresh token: refresh token is empty")
} }
d.RefreshToken, d.AccessToken = resp.RefreshToken, resp.AccessToken d.RefreshToken, d.AccessToken = refresh, access
op.MustSaveDriverStorage(d) op.MustSaveDriverStorage(d)
return nil return nil
} }
@ -65,6 +68,9 @@ func (d *AliyundriveOpen) requestReturnErrResp(uri, method string, callback base
req.SetError(&e) req.SetError(&e)
res, err := req.Execute(method, d.base+uri) res, err := req.Execute(method, d.base+uri)
if err != nil { if err != nil {
if res != nil {
log.Errorf("[aliyundrive_open] request error: %s", res.String())
}
return nil, err, nil return nil, err, nil
} }
isRetry := len(retry) > 0 && retry[0] isRetry := len(retry) > 0 && retry[0]