Skip to content

Commit e960035

Browse files
authored
refactor(drivers/139): adapt new capacity calculation (#2651)
refactor: 合并个人和家庭磁盘信息请求为统一的配额详情请求 Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>
1 parent a0f001c commit e960035

3 files changed

Lines changed: 19 additions & 70 deletions

File tree

drivers/139/driver.go

Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -944,38 +944,14 @@ func (d *Yun139) GetDetails(ctx context.Context) (*model.StorageDetails, error)
944944
if d.UserDomainID == "" {
945945
return nil, errs.NotImplement
946946
}
947-
var total, used int64
948-
if d.isFamily() {
949-
diskInfo, err := d.getFamilyDiskInfo(ctx)
950-
if err != nil {
951-
return nil, err
952-
}
953-
totalMb, err := strconv.ParseInt(diskInfo.Data.DiskSize, 10, 64)
954-
if err != nil {
955-
return nil, fmt.Errorf("failed convert disk size into integer: %+v", err)
956-
}
957-
usedMb, err := strconv.ParseInt(diskInfo.Data.UsedSize, 10, 64)
958-
if err != nil {
959-
return nil, fmt.Errorf("failed convert used size into integer: %+v", err)
960-
}
961-
total = totalMb * 1024 * 1024
962-
used = usedMb * 1024 * 1024
963-
} else {
964-
diskInfo, err := d.getPersonalDiskInfo(ctx)
965-
if err != nil {
966-
return nil, err
967-
}
968-
totalMb, err := strconv.ParseInt(diskInfo.Data.DiskSize, 10, 64)
969-
if err != nil {
970-
return nil, fmt.Errorf("failed convert disk size into integer: %+v", err)
971-
}
972-
freeMb, err := strconv.ParseInt(diskInfo.Data.FreeDiskSize, 10, 64)
973-
if err != nil {
974-
return nil, fmt.Errorf("failed convert free size into integer: %+v", err)
975-
}
976-
total = totalMb * 1024 * 1024
977-
used = total - (freeMb * 1024 * 1024)
947+
detail, err := d.getDiskQuotaDetail(ctx)
948+
if err != nil {
949+
return nil, err
978950
}
951+
952+
total := detail.Data.DiskSize * utils.MB
953+
used := (detail.Data.DiskSize - detail.Data.FreeDiskSize) * utils.MB
954+
979955
return &model.StorageDetails{
980956
DiskUsage: model.DiskUsage{
981957
TotalSpace: total,

drivers/139/types.go

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -313,20 +313,16 @@ type RefreshTokenResp struct {
313313
Desc string `xml:"desc"`
314314
}
315315

316-
type PersonalDiskInfoResp struct {
316+
type DiskQuotaDetail struct {
317317
BaseResp
318318
Data struct {
319-
FreeDiskSize string `json:"freeDiskSize"`
320-
DiskSize string `json:"diskSize"`
321-
IsInfinitePicStorage *bool `json:"isInfinitePicStorage"`
322-
} `json:"data"`
323-
}
324-
325-
type FamilyDiskInfoResp struct {
326-
BaseResp
327-
Data struct {
328-
UsedSize string `json:"usedSize"`
329-
DiskSize string `json:"diskSize"`
319+
FreeDiskSize int64 `json:"freeDiskSize"`
320+
DiskSize int64 `json:"diskSize"`
321+
// QuotaList []struct {
322+
// DriveType int `json:"driveType"`
323+
// DriveName string `json:"driveName"`
324+
// UsedSize int64 `json:"usedSize"`
325+
// } `json:"quotaList"`
330326
} `json:"data"`
331327
}
332328

drivers/139/util.go

Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"context"
66
"crypto/aes"
77
"crypto/cipher"
8-
"crypto/md5"
98
crypto_rand "crypto/rand"
109
"crypto/sha1"
1110
"encoding/base64"
@@ -205,9 +204,7 @@ func (d *Yun139) requestRoute(data interface{}, resp interface{}) ([]byte, error
205204
callback := func(req *resty.Request) {
206205
req.SetBody(data)
207206
}
208-
if callback != nil {
209-
callback(req)
210-
}
207+
callback(req)
211208
body, err := utils.Json.Marshal(req.Body)
212209
if err != nil {
213210
return nil, err
@@ -728,12 +725,12 @@ func (d *Yun139) uploadPersonalParts(ctx context.Context, partInfos []PartInfo,
728725
return nil
729726
}
730727

731-
func (d *Yun139) getPersonalDiskInfo(ctx context.Context) (*PersonalDiskInfoResp, error) {
728+
func (d *Yun139) getDiskQuotaDetail(ctx context.Context) (*DiskQuotaDetail, error) {
732729
data := map[string]interface{}{
733730
"userDomainId": d.UserDomainID,
734731
}
735-
var resp PersonalDiskInfoResp
736-
_, err := d.request("https://user-njs.yun.139.com/user/disk/getPersonalDiskInfo", http.MethodPost, func(req *resty.Request) {
732+
var resp DiskQuotaDetail
733+
_, err := d.request("https://user-njs.yun.139.com/user/disk/quota/detail", http.MethodPost, func(req *resty.Request) {
737734
req.SetBody(data)
738735
req.SetContext(ctx)
739736
}, &resp)
@@ -743,26 +740,6 @@ func (d *Yun139) getPersonalDiskInfo(ctx context.Context) (*PersonalDiskInfoResp
743740
return &resp, nil
744741
}
745742

746-
func (d *Yun139) getFamilyDiskInfo(ctx context.Context) (*FamilyDiskInfoResp, error) {
747-
data := map[string]interface{}{
748-
"userDomainId": d.UserDomainID,
749-
}
750-
var resp FamilyDiskInfoResp
751-
_, err := d.request("https://user-njs.yun.139.com/user/disk/getFamilyDiskInfo", http.MethodPost, func(req *resty.Request) {
752-
req.SetBody(data)
753-
req.SetContext(ctx)
754-
}, &resp)
755-
if err != nil {
756-
return nil, err
757-
}
758-
return &resp, nil
759-
}
760-
761-
func getMd5(dataStr string) string {
762-
hash := md5.Sum([]byte(dataStr))
763-
return fmt.Sprintf("%x", hash)
764-
}
765-
766743
func (d *Yun139) step1_password_login() (string, error) {
767744
log.Debugf("--- 执行步骤 1: 登录 API ---")
768745
loginURL := "https://mail.10086.cn/Login/Login.ashx"

0 commit comments

Comments
 (0)