mirror of https://github.com/Xhofe/alist
fix(seafile): token refresh (#3010)
* docs: add Seafile support * fix: Seafile token refreshpull/3055/head
parent
2dc5dec83c
commit
aaa8c440fe
|
@ -53,6 +53,7 @@
|
|||
- [x] FTP / SFTP
|
||||
- [x] [PikPak](https://www.mypikpak.com/)
|
||||
- [x] [S3](https://aws.amazon.com/cn/s3/)
|
||||
- [x] [Seafile](https://seafile.com/)
|
||||
- [x] [又拍云对象存储](https://www.upyun.com/products/file-storage)
|
||||
- [x] WebDav(支持无API的OneDrive/SharePoint)
|
||||
- [x] Teambition([中国](https://www.teambition.com/ ),[国际](https://us.teambition.com/ ))
|
||||
|
|
|
@ -5,6 +5,7 @@ import (
|
|||
"strings"
|
||||
|
||||
"github.com/alist-org/alist/v3/drivers/base"
|
||||
"github.com/go-resty/resty/v2"
|
||||
)
|
||||
|
||||
func (d *Seafile) getToken() error {
|
||||
|
@ -35,11 +36,21 @@ func (d *Seafile) request(method string, pathname string, callback base.ReqCallb
|
|||
if len(noRedirect) > 0 && noRedirect[0] {
|
||||
req = base.NoRedirectClient.R()
|
||||
}
|
||||
req.SetHeader("Authorization", d.authorization)
|
||||
callback(req)
|
||||
res, err := req.Execute(method, full)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
var res resty.Response
|
||||
for i := 0; i < 2; i++ {
|
||||
req.SetHeader("Authorization", d.authorization)
|
||||
callback(req)
|
||||
res, err := req.Execute(method, full)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if res.StatusCode() != 401 { // Unauthorized
|
||||
break
|
||||
}
|
||||
err = d.getToken()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
if res.StatusCode() >= 400 {
|
||||
return nil, fmt.Errorf("request failed: %s", res.String())
|
||||
|
|
Loading…
Reference in New Issue