Skip to content

Commit cc16cb3

Browse files
KirCutexrgzs
andauthored
feat(style): add driver icons and disk usage (#1274)
* feat(style): add driver icons and disk usage * feat(driver): add disk usage for 115_open, 123_open, aliyundrive_open and baidu_netdisk * feat(driver): add disk usage for crypt, sftp and smb * chore: clean unused variable * feat(driver): add disk usage for cloudreve_v4 Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> * fix(local): disk label check when getting disk usage * feat(style): return details when accessing the manage page --------- Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> Co-authored-by: MadDogOwner <xiaoran@xrgzs.top>
1 parent d3bc632 commit cc16cb3

File tree

26 files changed

+428
-81
lines changed

26 files changed

+428
-81
lines changed

drivers/115_open/driver.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,27 @@ func (d *Open115) OfflineList(ctx context.Context) (*sdk.OfflineTaskListResp, er
337337
return resp, nil
338338
}
339339

340+
func (d *Open115) GetDetails(ctx context.Context) (*model.StorageDetails, error) {
341+
userInfo, err := d.client.UserInfo(ctx)
342+
if err != nil {
343+
return nil, err
344+
}
345+
total, err := userInfo.RtSpaceInfo.AllTotal.Size.Int64()
346+
if err != nil {
347+
return nil, err
348+
}
349+
free, err := userInfo.RtSpaceInfo.AllRemain.Size.Int64()
350+
if err != nil {
351+
return nil, err
352+
}
353+
return &model.StorageDetails{
354+
DiskUsage: model.DiskUsage{
355+
TotalSpace: uint64(total),
356+
FreeSpace: uint64(free),
357+
},
358+
}, nil
359+
}
360+
340361
// func (d *Open115) GetArchiveMeta(ctx context.Context, obj model.Obj, args model.ArchiveArgs) (model.ArchiveMeta, error) {
341362
// // TODO get archive file meta-info, return errs.NotImplement to use an internal archive tool, optional
342363
// return nil, errs.NotImplement

drivers/123_open/driver.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,5 +214,20 @@ func (d *Open123) Put(ctx context.Context, dstDir model.Obj, file model.FileStre
214214
return nil, fmt.Errorf("upload complete timeout")
215215
}
216216

217+
func (d *Open123) GetDetails(ctx context.Context) (*model.StorageDetails, error) {
218+
userInfo, err := d.getUserInfo()
219+
if err != nil {
220+
return nil, err
221+
}
222+
total := userInfo.Data.SpacePermanent + userInfo.Data.SpaceTemp
223+
free := total - userInfo.Data.SpaceUsed
224+
return &model.StorageDetails{
225+
DiskUsage: model.DiskUsage{
226+
TotalSpace: total,
227+
FreeSpace: free,
228+
},
229+
}, nil
230+
}
231+
217232
var _ driver.Driver = (*Open123)(nil)
218233
var _ driver.PutResult = (*Open123)(nil)

drivers/123_open/types.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,9 @@ type UserInfoResp struct {
133133
// HeadImage string `json:"headImage"`
134134
// Passport string `json:"passport"`
135135
// Mail string `json:"mail"`
136-
// SpaceUsed int64 `json:"spaceUsed"`
137-
// SpacePermanent int64 `json:"spacePermanent"`
138-
// SpaceTemp int64 `json:"spaceTemp"`
136+
SpaceUsed uint64 `json:"spaceUsed"`
137+
SpacePermanent uint64 `json:"spacePermanent"`
138+
SpaceTemp uint64 `json:"spaceTemp"`
139139
// SpaceTempExpr int64 `json:"spaceTempExpr"`
140140
// Vip bool `json:"vip"`
141141
// DirectTraffic int64 `json:"directTraffic"`

drivers/aliyundrive_open/driver.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,21 @@ func (d *AliyundriveOpen) Other(ctx context.Context, args model.OtherArgs) (inte
291291
return resp, nil
292292
}
293293

294+
func (d *AliyundriveOpen) GetDetails(ctx context.Context) (*model.StorageDetails, error) {
295+
res, err := d.request(ctx, limiterOther, "/adrive/v1.0/user/getSpaceInfo", http.MethodPost, nil)
296+
if err != nil {
297+
return nil, err
298+
}
299+
total := utils.Json.Get(res, "personal_space_info", "total_size").ToUint64()
300+
used := utils.Json.Get(res, "personal_space_info", "used_size").ToUint64()
301+
return &model.StorageDetails{
302+
DiskUsage: model.DiskUsage{
303+
TotalSpace: total,
304+
FreeSpace: total - used,
305+
},
306+
}, nil
307+
}
308+
294309
var _ driver.Driver = (*AliyundriveOpen)(nil)
295310
var _ driver.MkdirResult = (*AliyundriveOpen)(nil)
296311
var _ driver.MoveResult = (*AliyundriveOpen)(nil)

drivers/baidu_netdisk/driver.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,4 +364,12 @@ func (d *BaiduNetdisk) uploadSlice(ctx context.Context, params map[string]string
364364
return nil
365365
}
366366

367+
func (d *BaiduNetdisk) GetDetails(ctx context.Context) (*model.StorageDetails, error) {
368+
du, err := d.quota()
369+
if err != nil {
370+
return nil, err
371+
}
372+
return &model.StorageDetails{DiskUsage: *du}, nil
373+
}
374+
367375
var _ driver.Driver = (*BaiduNetdisk)(nil)

drivers/baidu_netdisk/types.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,3 +189,12 @@ type PrecreateResp struct {
189189
// return_type=2
190190
File File `json:"info"`
191191
}
192+
193+
type QuotaResp struct {
194+
Errno int `json:"errno"`
195+
RequestId int64 `json:"request_id"`
196+
Total uint64 `json:"total"`
197+
Used uint64 `json:"used"`
198+
//Free uint64 `json:"free"`
199+
//Expire bool `json:"expire"`
200+
}

drivers/baidu_netdisk/util.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,18 @@ func (d *BaiduNetdisk) getSliceSize(filesize int64) int64 {
381381
return maxSliceSize
382382
}
383383

384+
func (d *BaiduNetdisk) quota() (*model.DiskUsage, error) {
385+
var resp QuotaResp
386+
_, err := d.request("https://pan.baidu.com/api/quota", http.MethodGet, nil, &resp)
387+
if err != nil {
388+
return nil, err
389+
}
390+
return &model.DiskUsage{
391+
TotalSpace: resp.Total,
392+
FreeSpace: resp.Total - resp.Used,
393+
}, nil
394+
}
395+
384396
// func encodeURIComponent(str string) string {
385397
// r := url.QueryEscape(str)
386398
// r = strings.ReplaceAll(r, "+", "%20")

drivers/cloudreve_v4/driver.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,21 @@ func (d *CloudreveV4) ArchiveDecompress(ctx context.Context, srcObj, dstDir mode
339339
return nil, errs.NotImplement
340340
}
341341

342+
func (d *CloudreveV4) GetDetails(ctx context.Context) (*model.StorageDetails, error) {
343+
// TODO return storage details (total space, free space, etc.)
344+
var r CapacityResp
345+
err := d.request(http.MethodGet, "/user/capacity", nil, &r)
346+
if err != nil {
347+
return nil, err
348+
}
349+
return &model.StorageDetails{
350+
DiskUsage: model.DiskUsage{
351+
TotalSpace: r.Total,
352+
FreeSpace: r.Total - r.Used,
353+
},
354+
}, nil
355+
}
356+
342357
//func (d *CloudreveV4) Other(ctx context.Context, args model.OtherArgs) (interface{}, error) {
343358
// return nil, errs.NotSupport
344359
//}

drivers/cloudreve_v4/types.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,3 +204,9 @@ type FolderSummaryResp struct {
204204
CalculatedAt time.Time `json:"calculated_at"`
205205
} `json:"folder_summary"`
206206
}
207+
208+
type CapacityResp struct {
209+
Total uint64 `json:"total"`
210+
Used uint64 `json:"used"`
211+
// StoragePackTotal uint64 `json:"storage_pack_total"`
212+
}

drivers/crypt/driver.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,20 @@ func (d *Crypt) Put(ctx context.Context, dstDir model.Obj, streamer model.FileSt
411411
return nil
412412
}
413413

414+
func (d *Crypt) GetDetails(ctx context.Context) (*model.StorageDetails, error) {
415+
wd, ok := d.remoteStorage.(driver.WithDetails)
416+
if !ok {
417+
return nil, errs.NotImplement
418+
}
419+
remoteDetails, err := wd.GetDetails(ctx)
420+
if err != nil {
421+
return nil, err
422+
}
423+
return &model.StorageDetails{
424+
DiskUsage: remoteDetails.DiskUsage,
425+
}, nil
426+
}
427+
414428
//func (d *Safe) Other(ctx context.Context, args model.OtherArgs) (interface{}, error) {
415429
// return nil, errs.NotSupport
416430
//}

0 commit comments

Comments
 (0)