Documentation
¶
Index ¶
- Constants
- Variables
- func AesECBEncrypt(data, key string) string
- func BoolToNumber(b bool) int
- func IF[V any](o bool, t V, f V) V
- func MustParseTime(str string) *time.Time
- func MustString(str string, err error) string
- func PKCS7Padding(ciphertext []byte, blockSize int) []byte
- func ParseHttpHeader(str string) map[string]string
- func RsaEncrypt(publicKey, origData string) string
- type Addition
- type AppSessionResp
- type BatchTaskConflictTaskInfoResp
- type BatchTaskInfo
- type BatchTaskStateResp
- type Cloud189File
- func (c *Cloud189File) CreateTime() time.Time
- func (c *Cloud189File) GetHash() utils.HashInfo
- func (c *Cloud189File) GetID() string
- func (c *Cloud189File) GetName() string
- func (c *Cloud189File) GetPath() string
- func (c *Cloud189File) GetSize() int64
- func (c *Cloud189File) IsDir() bool
- func (c *Cloud189File) ModTime() time.Time
- func (c *Cloud189File) Thumb() string
- type Cloud189FilesResp
- type Cloud189Folder
- func (c *Cloud189Folder) CreateTime() time.Time
- func (c *Cloud189Folder) GetHash() utils.HashInfo
- func (c *Cloud189Folder) GetID() string
- func (c *Cloud189Folder) GetName() string
- func (c *Cloud189Folder) GetPath() string
- func (c *Cloud189Folder) GetSize() int64
- func (c *Cloud189Folder) IsDir() bool
- func (c *Cloud189Folder) ModTime() time.Time
- type Cloud189PC
- func (y *Cloud189PC) CheckBatchTask(aType string, taskID string) (*BatchTaskStateResp, error)
- func (y *Cloud189PC) Config() driver.Config
- func (y *Cloud189PC) Copy(ctx context.Context, srcObj, dstDir model.Obj) error
- func (y *Cloud189PC) CreateBatchTask(aType string, familyID string, targetFolderId string, other map[string]string, ...) (*CreateBatchTaskResp, error)
- func (y *Cloud189PC) Delete(ctx context.Context, familyId string, srcObj model.Obj) error
- func (y *Cloud189PC) Drop(ctx context.Context) error
- func (y *Cloud189PC) EncryptParams(params Params, isFamily bool) string
- func (y *Cloud189PC) FastUpload(ctx context.Context, dstDir model.Obj, file model.FileStreamer, ...) (model.Obj, error)
- func (y *Cloud189PC) GetAddition() driver.Additional
- func (y *Cloud189PC) GetConflictTaskInfo(aType string, taskID string) (*BatchTaskConflictTaskInfoResp, error)
- func (y *Cloud189PC) GetMultiUploadUrls(ctx context.Context, isFamily bool, uploadFileId string, partInfo ...string) ([]UploadUrlInfo, error)
- func (y *Cloud189PC) Init(ctx context.Context) (err error)
- func (d *Cloud189PC) InitReference(storage driver.Driver) error
- func (y *Cloud189PC) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*model.Link, error)
- func (y *Cloud189PC) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([]model.Obj, error)
- func (y *Cloud189PC) MakeDir(ctx context.Context, parentDir model.Obj, dirName string) (model.Obj, error)
- func (y *Cloud189PC) ManageBatchTask(aType string, taskID string, targetFolderId string, taskInfos ...BatchTaskInfo) error
- func (y *Cloud189PC) Move(ctx context.Context, srcObj, dstDir model.Obj) (model.Obj, error)
- func (y *Cloud189PC) OldUpload(ctx context.Context, dstDir model.Obj, file model.FileStreamer, ...) (model.Obj, error)
- func (y *Cloud189PC) OldUploadCommit(ctx context.Context, fileCommitUrl string, uploadFileID int64, isFamily bool, ...) (model.Obj, error)
- func (y *Cloud189PC) OldUploadCreate(ctx context.Context, parentID string, fileMd5, fileName, fileSize string, ...) (*CreateUploadFileResp, error)
- func (y *Cloud189PC) Put(ctx context.Context, dstDir model.Obj, stream model.FileStreamer, ...) (newObj model.Obj, err error)
- func (y *Cloud189PC) RapidUpload(ctx context.Context, dstDir model.Obj, stream model.FileStreamer, ...) (model.Obj, error)
- func (y *Cloud189PC) Remove(ctx context.Context, obj model.Obj) error
- func (y *Cloud189PC) Rename(ctx context.Context, srcObj model.Obj, newName string) (model.Obj, error)
- func (y *Cloud189PC) SaveFamilyFileToPersonCloud(ctx context.Context, familyId string, srcObj, dstDir model.Obj, overwrite bool) error
- func (y *Cloud189PC) SignatureHeader(url, method, params string, isFamily bool) map[string]string
- func (y *Cloud189PC) StreamUpload(ctx context.Context, dstDir model.Obj, file model.FileStreamer, ...) (model.Obj, error)
- func (y *Cloud189PC) WaitBatchTask(aType string, taskID string, t time.Duration) error
- type CommitMultiUploadFileResp
- type CreateBatchTaskResp
- type CreateUploadFileResp
- type EncryptConfResp
- type FamilyInfoListResp
- type FamilyInfoResp
- type GetUploadFileStatusResp
- type InitMultiUploadResp
- type LoginParam
- type LoginResp
- type OldCommitUploadFileResp
- type Params
- type RespErr
- type String
- type Time
- type UploadProgress
- type UploadUrlInfo
- type UploadUrlsData
- type UploadUrlsResp
- type UserSessionResp
- type WrapFileStreamer
Constants ¶
View Source
const ( ACCOUNT_TYPE = "02" APP_ID = "8025431004" CLIENT_TYPE = "10020" VERSION = "6.2" WEB_URL = "https://cloud.189.cn" AUTH_URL = "https://open.e.189.cn" API_URL = "https://api.cloud.189.cn" UPLOAD_URL = "https://upload.cloud.189.cn" RETURN_URL = "https://m.cloud.189.cn/zhuanti/2020/loginErrorPc/index.html" PC = "TELEPC" MAC = "TELEMAC" CHANNEL_ID = "web_cloud.189.cn" )
Variables ¶
View Source
var ErrIsConflict = errors.New("there is a conflict with the target object")
Functions ¶
func BoolToNumber ¶
func MustParseTime ¶
func MustString ¶
func PKCS7Padding ¶
func ParseHttpHeader ¶
Types ¶
type Addition ¶
type Addition struct {
Username string `json:"username" required:"true"`
Password string `json:"password" required:"true"`
VCode string `json:"validate_code"`
driver.RootID
OrderBy string `json:"order_by" type:"select" options:"filename,filesize,lastOpTime" default:"filename"`
OrderDirection string `json:"order_direction" type:"select" options:"asc,desc" default:"asc"`
Type string `json:"type" type:"select" options:"personal,family" default:"personal"`
FamilyID string `json:"family_id"`
UploadMethod string `json:"upload_method" type:"select" options:"stream,rapid,old" default:"stream"`
UploadThread string `json:"upload_thread" default:"3" help:"1<=thread<=32"`
FamilyTransfer bool `json:"family_transfer"`
RapidUpload bool `json:"rapid_upload"`
NoUseOcr bool `json:"no_use_ocr"`
}
type AppSessionResp ¶
type AppSessionResp struct {
UserSessionResp
IsSaveName string `json:"isSaveName"`
// 会话刷新Token
AccessToken string `json:"accessToken"`
//Token刷新
RefreshToken string `json:"refreshToken"`
}
登录返回
type BatchTaskConflictTaskInfoResp ¶
type BatchTaskConflictTaskInfoResp struct {
SessionKey string `json:"sessionKey"`
TargetFolderID int `json:"targetFolderId"`
TaskID string `json:"taskId"`
TaskInfos []BatchTaskInfo
TaskType int `json:"taskType"`
}
type BatchTaskInfo ¶
type BatchTaskInfo struct {
// FileId 文件ID
FileId string `json:"fileId"`
// FileName 文件名
FileName string `json:"fileName"`
// IsFolder 是否是文件夹,0-否,1-是
IsFolder int `json:"isFolder"`
// SrcParentId 文件所在父目录ID
SrcParentId string `json:"srcParentId,omitempty"`
/* 冲突管理 */
// 1 -> 跳过 2 -> 保留 3 -> 覆盖
DealWay int `json:"dealWay,omitempty"`
IsConflict int `json:"isConflict,omitempty"`
}
TaskInfo 任务信息
type BatchTaskStateResp ¶
type BatchTaskStateResp struct {
FailedCount int `json:"failedCount"`
Process int `json:"process"`
SkipCount int `json:"skipCount"`
SubTaskCount int `json:"subTaskCount"`
SuccessedCount int `json:"successedCount"`
SuccessedFileIDList []int64 `json:"successedFileIdList"`
TaskID string `json:"taskId"`
TaskStatus int `json:"taskStatus"` //1 初始化 2 存在冲突 3 执行中,4 完成
}
type Cloud189File ¶
type Cloud189File struct {
ID String `json:"id"`
Name string `json:"name"`
Size int64 `json:"size"`
Md5 string `json:"md5"`
LastOpTime Time `json:"lastOpTime"`
CreateDate Time `json:"createDate"`
Icon struct {
//iconOption 5
SmallUrl string `json:"smallUrl"`
LargeUrl string `json:"largeUrl"`
// iconOption 10
Max600 string `json:"max600"`
MediumURL string `json:"mediumUrl"`
} `json:"icon"`
}
文件部分 文件
func (*Cloud189File) CreateTime ¶
func (c *Cloud189File) CreateTime() time.Time
func (*Cloud189File) GetHash ¶
func (c *Cloud189File) GetHash() utils.HashInfo
func (*Cloud189File) GetID ¶
func (c *Cloud189File) GetID() string
func (*Cloud189File) GetName ¶
func (c *Cloud189File) GetName() string
func (*Cloud189File) GetPath ¶
func (c *Cloud189File) GetPath() string
func (*Cloud189File) GetSize ¶
func (c *Cloud189File) GetSize() int64
func (*Cloud189File) IsDir ¶
func (c *Cloud189File) IsDir() bool
func (*Cloud189File) ModTime ¶
func (c *Cloud189File) ModTime() time.Time
func (*Cloud189File) Thumb ¶
func (c *Cloud189File) Thumb() string
type Cloud189FilesResp ¶
type Cloud189FilesResp struct {
//ResCode int `json:"res_code"`
//ResMessage string `json:"res_message"`
FileListAO struct {
Count int `json:"count"`
FileList []Cloud189File `json:"fileList"`
FolderList []Cloud189Folder `json:"folderList"`
} `json:"fileListAO"`
}
type Cloud189Folder ¶
type Cloud189Folder struct {
ID String `json:"id"`
ParentID int64 `json:"parentId"`
Name string `json:"name"`
LastOpTime Time `json:"lastOpTime"`
CreateDate Time `json:"createDate"`
}
文件夹
func (*Cloud189Folder) CreateTime ¶
func (c *Cloud189Folder) CreateTime() time.Time
func (*Cloud189Folder) GetHash ¶
func (c *Cloud189Folder) GetHash() utils.HashInfo
func (*Cloud189Folder) GetID ¶
func (c *Cloud189Folder) GetID() string
func (*Cloud189Folder) GetName ¶
func (c *Cloud189Folder) GetName() string
func (*Cloud189Folder) GetPath ¶
func (c *Cloud189Folder) GetPath() string
func (*Cloud189Folder) GetSize ¶
func (c *Cloud189Folder) GetSize() int64
func (*Cloud189Folder) IsDir ¶
func (c *Cloud189Folder) IsDir() bool
func (*Cloud189Folder) ModTime ¶
func (c *Cloud189Folder) ModTime() time.Time
type Cloud189PC ¶
func (*Cloud189PC) CheckBatchTask ¶
func (y *Cloud189PC) CheckBatchTask(aType string, taskID string) (*BatchTaskStateResp, error)
检测任务状态
func (*Cloud189PC) Config ¶
func (y *Cloud189PC) Config() driver.Config
func (*Cloud189PC) CreateBatchTask ¶
func (y *Cloud189PC) CreateBatchTask(aType string, familyID string, targetFolderId string, other map[string]string, taskInfos ...BatchTaskInfo) (*CreateBatchTaskResp, error)
func (*Cloud189PC) EncryptParams ¶
func (y *Cloud189PC) EncryptParams(params Params, isFamily bool) string
func (*Cloud189PC) FastUpload ¶
func (y *Cloud189PC) FastUpload(ctx context.Context, dstDir model.Obj, file model.FileStreamer, up driver.UpdateProgress, isFamily bool, overwrite bool) (model.Obj, error)
快传
func (*Cloud189PC) GetAddition ¶
func (y *Cloud189PC) GetAddition() driver.Additional
func (*Cloud189PC) GetConflictTaskInfo ¶
func (y *Cloud189PC) GetConflictTaskInfo(aType string, taskID string) (*BatchTaskConflictTaskInfoResp, error)
获取冲突的任务信息
func (*Cloud189PC) GetMultiUploadUrls ¶
func (y *Cloud189PC) GetMultiUploadUrls(ctx context.Context, isFamily bool, uploadFileId string, partInfo ...string) ([]UploadUrlInfo, error)
获取上传切片信息 对http body有大小限制,分片信息太多会出错
func (*Cloud189PC) InitReference ¶
func (d *Cloud189PC) InitReference(storage driver.Driver) error
func (*Cloud189PC) ManageBatchTask ¶
func (y *Cloud189PC) ManageBatchTask(aType string, taskID string, targetFolderId string, taskInfos ...BatchTaskInfo) error
处理冲突
func (*Cloud189PC) OldUpload ¶
func (y *Cloud189PC) OldUpload(ctx context.Context, dstDir model.Obj, file model.FileStreamer, up driver.UpdateProgress, isFamily bool, overwrite bool) (model.Obj, error)
旧版本上传,家庭云不支持覆盖
func (*Cloud189PC) OldUploadCommit ¶
func (y *Cloud189PC) OldUploadCommit(ctx context.Context, fileCommitUrl string, uploadFileID int64, isFamily bool, overwrite bool) (model.Obj, error)
提交上传文件
func (*Cloud189PC) OldUploadCreate ¶
func (y *Cloud189PC) OldUploadCreate(ctx context.Context, parentID string, fileMd5, fileName, fileSize string, isFamily bool) (*CreateUploadFileResp, error)
创建上传会话
func (*Cloud189PC) Put ¶
func (y *Cloud189PC) Put(ctx context.Context, dstDir model.Obj, stream model.FileStreamer, up driver.UpdateProgress) (newObj model.Obj, err error)
func (*Cloud189PC) RapidUpload ¶
func (*Cloud189PC) SaveFamilyFileToPersonCloud ¶
func (y *Cloud189PC) SaveFamilyFileToPersonCloud(ctx context.Context, familyId string, srcObj, dstDir model.Obj, overwrite bool) error
保存家庭云中的文件到个人云
func (*Cloud189PC) SignatureHeader ¶
func (y *Cloud189PC) SignatureHeader(url, method, params string, isFamily bool) map[string]string
func (*Cloud189PC) StreamUpload ¶
func (y *Cloud189PC) StreamUpload(ctx context.Context, dstDir model.Obj, file model.FileStreamer, up driver.UpdateProgress, isFamily bool, overwrite bool) (model.Obj, error)
普通上传 无法上传大小为0的文件
func (*Cloud189PC) WaitBatchTask ¶
等待任务完成
type CreateBatchTaskResp ¶
type CreateBatchTaskResp struct {
TaskID string `json:"taskId"`
}
type CreateUploadFileResp ¶
type CreateUploadFileResp struct {
// 上传文件请求ID
UploadFileId int64 `json:"uploadFileId"`
// 上传文件数据的URL路径
FileUploadUrl string `json:"fileUploadUrl"`
// 上传文件完成后确认路径
FileCommitUrl string `json:"fileCommitUrl"`
// 文件是否已存在云盘中,0-未存在,1-已存在
FileDataExists int `json:"fileDataExists"`
}
第二种上传方式
type EncryptConfResp ¶
type EncryptConfResp struct {
Result int `json:"result"`
Data struct {
UpSmsOn string `json:"upSmsOn"`
Pre string `json:"pre"`
PreDomain string `json:"preDomain"`
PubKey string `json:"pubKey"`
} `json:"data"`
}
登陆加密相关
type FamilyInfoListResp ¶
type FamilyInfoListResp struct {
FamilyInfoResp []FamilyInfoResp `json:"familyInfoResp"`
}
家庭云账户
type FamilyInfoResp ¶
type GetUploadFileStatusResp ¶
type GetUploadFileStatusResp struct {
CreateUploadFileResp
// 已上传的大小
DataSize int64 `json:"dataSize"`
Size int64 `json:"size"`
}
func (*GetUploadFileStatusResp) GetSize ¶
func (r *GetUploadFileStatusResp) GetSize() int64
type InitMultiUploadResp ¶
type InitMultiUploadResp struct {
//Code string `json:"code"`
Data struct {
UploadType int `json:"uploadType"`
UploadHost string `json:"uploadHost"`
UploadFileID string `json:"uploadFileId"`
FileDataExists int `json:"fileDataExists"`
} `json:"data"`
}
上传部分
type LoginParam ¶
type LoginParam struct {
// 加密后的用户名和密码
RsaUsername string
RsaPassword string
// 请求头参数
Lt string
ReqId string
// 表单参数
ParamId string
// 验证码
CaptchaToken string
// contains filtered or unexported fields
}
登陆需要的参数
type OldCommitUploadFileResp ¶
type RespErr ¶
type RespErr struct {
ResCode any `json:"res_code"` // int or string
ResMessage string `json:"res_message"`
Error_ string `json:"error"`
XMLName xml.Name `xml:"error"`
Code string `json:"code" xml:"code"`
Message string `json:"message" xml:"message"`
Msg string `json:"msg"`
ErrorCode string `json:"errorCode"`
ErrorMsg string `json:"errorMsg"`
}
居然有四种返回方式
type UploadProgress ¶
type UploadProgress struct {
UploadInfo InitMultiUploadResp
UploadParts []string
}
type UploadUrlInfo ¶
type UploadUrlInfo struct {
PartNumber int
Headers map[string]string
UploadUrlsData
}
type UploadUrlsData ¶
type UploadUrlsResp ¶
type UploadUrlsResp struct {
Code string `json:"code"`
Data map[string]UploadUrlsData `json:"uploadUrls"`
}
type UserSessionResp ¶
type UserSessionResp struct {
ResCode int `json:"res_code"`
ResMessage string `json:"res_message"`
LoginName string `json:"loginName"`
KeepAlive int `json:"keepAlive"`
GetFileDiffSpan int `json:"getFileDiffSpan"`
GetUserInfoSpan int `json:"getUserInfoSpan"`
// 个人云
SessionKey string `json:"sessionKey"`
SessionSecret string `json:"sessionSecret"`
// 家庭云
FamilySessionKey string `json:"familySessionKey"`
FamilySessionSecret string `json:"familySessionSecret"`
}
刷新session返回
type WrapFileStreamer ¶
type WrapFileStreamer struct {
model.FileStreamer
Name string
}
func (*WrapFileStreamer) GetName ¶
func (w *WrapFileStreamer) GetName() string
Click to show internal directories.
Click to hide internal directories.