forked from qjfoidnh/BaiduPCS-Go
-
Notifications
You must be signed in to change notification settings - Fork 1
/
recycle.go
115 lines (92 loc) · 3.04 KB
/
recycle.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package baidupcs
import (
"github.com/qjfoidnh/BaiduPCS-Go/baidupcs/pcserror"
)
type (
// RecycleFDInfo 回收站中文件/目录信息
RecycleFDInfo struct {
FsID int64 `json:"fs_id"` // fs_id
Isdir int `json:"isdir"`
LeftTime int `json:"leftTime"` // 剩余时间
Path string `json:"path"` // 路径
Filename string `json:"server_filename"` // 文件名 或 目录名
Ctime int64 `json:"server_ctime"` // 创建日期
Mtime int64 `json:"server_mtime"` // 修改日期
MD5 string `json:"md5"` // md5 值
Size int64 `json:"size"` // 文件大小 (目录为0)
}
// RecycleFDInfoList 回收站中文件/目录列表
RecycleFDInfoList []*RecycleFDInfo
recycleListJSON struct {
*pcserror.PanErrorInfo
List RecycleFDInfoList `json:"list"`
}
recycleRestoreJSON struct {
*pcserror.PCSErrInfo
Extra FsIDListJSON `json:"extra"`
}
// RecycleClearInfo 清空回收站的信息
RecycleClearInfo struct {
List RecycleFDInfoList `json:"list"`
SussNum int `json:"succNum"`
}
recycleClearJSON struct {
*pcserror.PCSErrInfo
Extra RecycleClearInfo `json:"extra"`
}
)
// RecycleList 列出回收站文件列表
func (pcs *BaiduPCS) RecycleList(page int) (fdl RecycleFDInfoList, panError pcserror.Error) {
dataReadCloser, panError := pcs.PrepareRecycleList(page)
if panError != nil {
return
}
defer dataReadCloser.Close()
errInfo := pcserror.NewPanErrorInfo(OperationRecycleList)
jsonData := recycleListJSON{
PanErrorInfo: errInfo,
}
panError = pcserror.HandleJSONParse(OperationRecycleList, dataReadCloser, &jsonData)
if panError != nil {
return
}
return jsonData.List, nil
}
// RecycleRestore 还原回收站文件或目录
func (pcs *BaiduPCS) RecycleRestore(fidList ...int64) (sussFsIDList []*FsIDJSON, pcsError pcserror.Error) {
dataReadCloser, pcsError := pcs.PrepareRecycleRestore(fidList...)
if pcsError != nil {
return
}
defer dataReadCloser.Close()
errInfo := pcserror.NewPCSErrorInfo(OperationRecycleRestore)
jsonData := recycleRestoreJSON{
PCSErrInfo: errInfo,
}
pcsError = pcserror.HandleJSONParse(OperationRecycleRestore, dataReadCloser, &jsonData)
return jsonData.Extra.List, pcsError
}
// RecycleDelete 删除回收站文件或目录
func (pcs *BaiduPCS) RecycleDelete(fidList ...int64) (panError pcserror.Error) {
dataReadCloser, panError := pcs.PrepareRecycleDelete(fidList...)
if panError != nil {
return
}
defer dataReadCloser.Close()
panError = pcserror.DecodePanJSONError(OperationRecycleDelete, dataReadCloser)
return
}
// RecycleClear 清空回收站
func (pcs *BaiduPCS) RecycleClear() (sussNum int, pcsError pcserror.Error) {
dataReadCloser, pcsError := pcs.PrepareRecycleClear()
if pcsError != nil {
return
}
defer dataReadCloser.Close()
errInfo := pcserror.NewPCSErrorInfo(OperationRecycleClear)
jsonData := recycleClearJSON{
PCSErrInfo: errInfo,
}
pcsError = pcserror.HandleJSONParse(OperationRecycleClear, dataReadCloser, &jsonData)
return jsonData.Extra.SussNum, pcsError
}