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{})
 | 
						|
}
 |