1
0
mirror of https://github.com/1Panel-dev/1Panel.git synced 2025-01-21 09:19:16 +08:00

95 lines
2.0 KiB
Go
Raw Normal View History

package client
import (
"path"
"github.com/upyun/go-sdk/upyun"
)
type upClient struct {
bucket string
client *upyun.UpYun
}
func NewUpClient(vars map[string]interface{}) (*upClient, error) {
operator := loadParamFromVars("operator", vars)
password := loadParamFromVars("password", vars)
bucket := loadParamFromVars("bucket", vars)
client := upyun.NewUpYun(&upyun.UpYunConfig{
Bucket: bucket,
Operator: operator,
Password: password,
})
return &upClient{bucket: bucket, client: client}, nil
}
func (o upClient) ListBuckets() ([]interface{}, error) {
var result []interface{}
return result, nil
}
func (s upClient) Upload(src, target string) (bool, error) {
if _, err := s.client.GetInfo(path.Dir(src)); err != nil {
_ = s.client.Mkdir(path.Dir(src))
}
if err := s.client.Put(&upyun.PutObjectConfig{
Path: target,
LocalPath: src,
UseResumeUpload: true,
}); err != nil {
return false, err
}
return true, nil
}
func (s upClient) Size(path string) (int64, error) {
fileInfo, err := s.client.GetInfo(path)
if err != nil {
return 0, err
}
return fileInfo.Size, nil
}
func (s upClient) Delete(path string) (bool, error) {
if err := s.client.Delete(&upyun.DeleteObjectConfig{
Path: path,
}); err != nil {
return false, err
}
return true, nil
}
func (s upClient) Exist(filePath string) (bool, error) {
if _, err := s.client.GetInfo(filePath); err != nil {
return false, err
}
return true, nil
}
func (s upClient) Download(src, target string) (bool, error) {
if _, err := s.client.Get(&upyun.GetObjectConfig{
Path: src,
LocalPath: target,
}); err != nil {
return false, err
}
return true, nil
}
func (s *upClient) ListObjects(prefix string) ([]string, error) {
objsChan := make(chan *upyun.FileInfo, 10)
if err := s.client.List(&upyun.GetObjectsConfig{
Path: prefix,
ObjectsChan: objsChan,
MaxListTries: 1,
}); err != nil {
return nil, err
}
var files []string
for obj := range objsChan {
files = append(files, obj.Name)
}
return files, nil
}