mirror of https://github.com/Xhofe/alist
91 lines
1.8 KiB
Go
91 lines
1.8 KiB
Go
|
package template
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"github.com/Xhofe/alist/conf"
|
||
|
"github.com/Xhofe/alist/drivers/base"
|
||
|
"github.com/Xhofe/alist/model"
|
||
|
"github.com/Xhofe/alist/utils"
|
||
|
"github.com/go-resty/resty/v2"
|
||
|
"path"
|
||
|
)
|
||
|
|
||
|
func LoginOrRefreshToken(account *model.Account) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func Request(u string, method int, headers, query, form map[string]string, data interface{}, resp interface{}, account *model.Account) ([]byte, error) {
|
||
|
req := base.RestyClient.R()
|
||
|
req.SetHeaders(map[string]string{
|
||
|
"Authorization": "Bearer" + account.AccessToken,
|
||
|
"Accept": "application/json, text/plain, */*",
|
||
|
})
|
||
|
if headers != nil {
|
||
|
req.SetHeaders(headers)
|
||
|
}
|
||
|
if query != nil {
|
||
|
req.SetQueryParams(query)
|
||
|
}
|
||
|
if form != nil {
|
||
|
req.SetFormData(form)
|
||
|
}
|
||
|
if data != nil {
|
||
|
req.SetBody(data)
|
||
|
}
|
||
|
if resp != nil {
|
||
|
req.SetResult(resp)
|
||
|
}
|
||
|
var e Resp
|
||
|
var err error
|
||
|
var res *resty.Response
|
||
|
req.SetError(&e)
|
||
|
switch method {
|
||
|
case base.Get:
|
||
|
res, err = req.Get(u)
|
||
|
case base.Post:
|
||
|
res, err = req.Post(u)
|
||
|
case base.Delete:
|
||
|
res, err = req.Delete(u)
|
||
|
case base.Patch:
|
||
|
res, err = req.Patch(u)
|
||
|
case base.Put:
|
||
|
res, err = req.Put(u)
|
||
|
default:
|
||
|
return nil, base.ErrNotSupport
|
||
|
}
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
if e.Code >= 400 {
|
||
|
if e.Code == 401 {
|
||
|
err = LoginOrRefreshToken(account)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return Request(u, method, headers, query, form, data, resp, account)
|
||
|
}
|
||
|
return nil, errors.New(e.Message)
|
||
|
}
|
||
|
return res.Body(), nil
|
||
|
}
|
||
|
|
||
|
func (driver Template) formatFile(f *File) *model.File {
|
||
|
file := model.File{
|
||
|
Id: f.Id,
|
||
|
Name: f.FileName,
|
||
|
Size: f.Size,
|
||
|
Driver: driver.Config().Name,
|
||
|
UpdatedAt: f.UpdatedAt,
|
||
|
}
|
||
|
if f.File {
|
||
|
file.Type = utils.GetFileType(path.Ext(f.FileName))
|
||
|
} else {
|
||
|
file.Type = conf.FOLDER
|
||
|
}
|
||
|
return &file
|
||
|
}
|
||
|
|
||
|
func init() {
|
||
|
base.RegisterDriver(&Template{})
|
||
|
}
|