mirror of
https://github.com/OpenListTeam/OpenList.git
synced 2025-11-25 11:29:29 +08:00
fix(drivers): free space underflow if used larger than total space (#1407)
This commit is contained in:
@@ -260,10 +260,7 @@ func (d *Pan123) GetDetails(ctx context.Context) (*model.StorageDetails, error)
|
||||
}
|
||||
total := userInfo.Data.SpacePermanent + userInfo.Data.SpaceTemp
|
||||
return &model.StorageDetails{
|
||||
DiskUsage: model.DiskUsage{
|
||||
TotalSpace: total,
|
||||
FreeSpace: total - userInfo.Data.SpaceUsed,
|
||||
},
|
||||
DiskUsage: *model.NewDiskUsageFromUsedAndTotal(userInfo.Data.SpaceUsed, total),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -337,10 +337,7 @@ func (d *AliDrive) GetDetails(ctx context.Context) (*model.StorageDetails, error
|
||||
used := utils.Json.Get(res, "drive_used_size").ToUint64()
|
||||
total := utils.Json.Get(res, "drive_total_size").ToUint64()
|
||||
return &model.StorageDetails{
|
||||
DiskUsage: model.DiskUsage{
|
||||
TotalSpace: total,
|
||||
FreeSpace: total - used,
|
||||
},
|
||||
DiskUsage: *model.NewDiskUsageFromUsedAndTotal(used, total),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -390,10 +390,7 @@ func (d *BaiduNetdisk) quota(ctx context.Context) (*model.DiskUsage, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &model.DiskUsage{
|
||||
TotalSpace: resp.Total,
|
||||
FreeSpace: resp.Total - resp.Used,
|
||||
}, nil
|
||||
return model.NewDiskUsageFromUsedAndTotal(resp.Used, resp.Total), nil
|
||||
}
|
||||
|
||||
// func encodeURIComponent(str string) string {
|
||||
|
||||
@@ -349,10 +349,7 @@ func (d *CloudreveV4) GetDetails(ctx context.Context) (*model.StorageDetails, er
|
||||
return nil, err
|
||||
}
|
||||
return &model.StorageDetails{
|
||||
DiskUsage: model.DiskUsage{
|
||||
TotalSpace: r.Total,
|
||||
FreeSpace: r.Total - r.Used,
|
||||
},
|
||||
DiskUsage: *model.NewDiskUsageFromUsedAndTotal(r.Used, r.Total),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -189,10 +189,7 @@ func (d *GoogleDrive) GetDetails(ctx context.Context) (*model.StorageDetails, er
|
||||
return nil, err
|
||||
}
|
||||
return &model.StorageDetails{
|
||||
DiskUsage: model.DiskUsage{
|
||||
TotalSpace: total,
|
||||
FreeSpace: total - used,
|
||||
},
|
||||
DiskUsage: *model.NewDiskUsageFromUsedAndTotal(used, total),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -412,10 +412,7 @@ func (d *ILanZou) GetDetails(ctx context.Context) (*model.StorageDetails, error)
|
||||
total := utils.Json.Get(res, "map", "totalSize").ToUint64() * 1024
|
||||
used := utils.Json.Get(res, "map", "usedSize").ToUint64() * 1024
|
||||
return &model.StorageDetails{
|
||||
DiskUsage: model.DiskUsage{
|
||||
TotalSpace: total,
|
||||
FreeSpace: total - used,
|
||||
},
|
||||
DiskUsage: *model.NewDiskUsageFromUsedAndTotal(used, total),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -61,6 +61,13 @@ type DiskUsage struct {
|
||||
FreeSpace uint64 `json:"free_space"`
|
||||
}
|
||||
|
||||
func NewDiskUsageFromUsedAndTotal(used, total uint64) *DiskUsage {
|
||||
return &DiskUsage{
|
||||
TotalSpace: max(used, total),
|
||||
FreeSpace: total - min(used, total),
|
||||
}
|
||||
}
|
||||
|
||||
type StorageDetails struct {
|
||||
DiskUsage
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user