Documentation
¶
Index ¶
- Constants
- type Addition
- type BaseResp
- type Catalog
- type CloudCatalog
- type CloudContent
- type Content
- type GetDiskResp
- type InterLayerUploadResult
- type ParallelHashCtx
- type PartInfo
- type PersonalFileItem
- type PersonalListResp
- type PersonalPartInfo
- type PersonalThumbnail
- type PersonalUploadResp
- type PersonalUploadURLResp
- type QueryContentListResp
- type QueryGroupContentListResp
- type QueryRoutePolicyResp
- type RefreshTokenResp
- type UploadResp
- type Yun139
- func (d *Yun139) Config() driver.Config
- func (d *Yun139) Copy(ctx context.Context, srcObj, dstDir model.Obj) error
- func (d *Yun139) Drop(ctx context.Context) error
- func (d *Yun139) GetAddition() driver.Additional
- func (d *Yun139) Init(ctx context.Context) error
- func (d *Yun139) InitReference(storage driver.Driver) error
- func (d *Yun139) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*model.Link, error)
- func (d *Yun139) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([]model.Obj, error)
- func (d *Yun139) MakeDir(ctx context.Context, parentDir model.Obj, dirName string) error
- func (d *Yun139) Move(ctx context.Context, srcObj, dstDir model.Obj) (model.Obj, error)
- func (d *Yun139) Other(ctx context.Context, args model.OtherArgs) (any, error)
- func (d *Yun139) Put(ctx context.Context, dstDir model.Obj, stream model.FileStreamer, ...) error
- func (d *Yun139) Remove(ctx context.Context, obj model.Obj) error
- func (d *Yun139) Rename(ctx context.Context, srcObj model.Obj, newName string) error
Constants ¶
const ( MetaPersonal string = "personal" // 旧版个人云盘,表示旧版个人云服务类型 MetaFamily string = "family" // 家庭云,表示家庭共享云服务类型 MetaGroup string = "group" // 群组云,表示群组共享云服务类型 MetaPersonalNew string = "personal_new" // 新版个人云盘,表示新版个人云服务类型 )
云盘类型常量
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Addition ¶
type Addition struct {
// Authorization: 139 云盘的授权令牌,必填,用于身份验证和API调用
Authorization string `json:"authorization" type:"text" required:"true"`
// RootID: 根目录 ID,继承自 driver.RootID,用于指定驱动的根目录
driver.RootID
// Type: 云盘类型(新版个人云、家庭云、群组云、旧版个人云),用于区分不同的云盘服务类型
Type string `json:"type" type:"select" options:"personal_new,family,group,personal" default:"personal_new"`
// CloudID: 云盘 ID(家庭云/群组云专用),用于指定家庭云或群组云的唯一标识
CloudID string `json:"cloud_id"`
// CustomUploadPartSize: 自定义上传分片大小(字节),0 表示自动,用于控制文件上传时的分片大小
CustomUploadPartSize int64 `json:"custom_upload_part_size" type:"number" default:"0" help:"0 for auto"`
// ReportRealSize: 上传时是否报告真实文件大小,启用后上传时会报告文件的真实大小
ReportRealSize bool `json:"report_real_size" type:"bool" default:"true" help:"Enable to report the real file size during upload"`
// UseLargeThumbnail: 是否使用大尺寸缩略图,启用后会获取图像的大尺寸缩略图
UseLargeThumbnail bool `json:"use_large_thumbnail" type:"bool" default:"false" help:"Enable to use large thumbnail for images"`
}
Addition 定义 139 云盘驱动的配置项 用于存储授权信息、云盘类型、分片大小等参数 该结构体会被序列化用于配置管理 字段说明见各字段注释
type BaseResp ¶
type BaseResp struct {
Success bool `json:"success"` // 请求是否成功,true 表示成功,false 表示失败
Code string `json:"code"` // 状态码,用于标识具体的错误类型或成功状态
Message string `json:"message"` // 错误消息,当请求失败时提供具体的错误描述
}
BaseResp 定义 API 响应的基础结构 用于所有接口的通用返回,包含请求是否成功、状态码和错误信息 Success: 是否成功,Code: 状态码,Message: 错误信息
type Catalog ¶
type Catalog struct {
CatalogID string `json:"catalogID"` // 目录ID,唯一标识一个目录
CatalogName string `json:"catalogName"` // 目录名称,用于显示和识别目录
CreateTime string `json:"createTime"` // 创建时间,记录目录创建的时间戳
UpdateTime string `json:"updateTime"` // 更新时间,记录目录最后更新的时间戳
}
Catalog 表示云盘目录结构 包含目录的基本信息,如 ID、名称、创建时间和更新时间
type CloudCatalog ¶
type CloudCatalog struct {
CatalogID string `json:"catalogID"` // 目录ID,唯一标识一个目录
CatalogName string `json:"catalogName"` // 目录名称,用于显示和识别目录
CreateTime string `json:"createTime"` // 创建时间,记录目录创建的时间戳
LastUpdateTime string `json:"lastUpdateTime"` // 最后更新时间,记录目录最后更新的时间戳
}
CloudCatalog 表示家庭云/群组云的目录结构 包含目录的基本信息,如 ID、名称、创建时间和更新时间
type CloudContent ¶
type CloudContent struct {
ContentID string `json:"contentID"` // 文件ID,唯一标识一个文件
ContentName string `json:"contentName"` // 文件名,用于显示和识别文件
ContentSize int64 `json:"contentSize"` // 文件大小,单位为字节
CreateTime string `json:"createTime"` // 创建时间,记录文件创建的时间戳
LastUpdateTime string `json:"lastUpdateTime"` // 最后更新时间,记录文件最后更新的时间戳
ThumbnailURL string `json:"thumbnailURL"` // 缩略图URL,用于预览文件的缩略图
}
CloudContent 表示家庭云/群组云的文件结构 包含文件的基本信息,如 ID、名称、大小、创建时间和更新时间
type Content ¶
type Content struct {
ContentID string `json:"contentID"` // 文件ID,唯一标识一个文件
ContentName string `json:"contentName"` // 文件名,用于显示和识别文件
ContentSize int64 `json:"contentSize"` // 文件大小,单位为字节
CreateTime string `json:"createTime"` // 创建时间,记录文件创建的时间戳
UpdateTime string `json:"updateTime"` // 更新时间,记录文件最后更新的时间戳
ThumbnailURL string `json:"thumbnailURL"` // 缩略图URL,用于预览文件的缩略图
Digest string `json:"digest"` // 文件摘要(MD5),用于校验文件完整性
}
Content 表示云盘文件内容结构 包含文件的基本信息,如 ID、名称、大小、创建时间、更新时间和缩略图
type GetDiskResp ¶
type GetDiskResp struct {
BaseResp
Data struct {
Result struct {
ResultCode string `json:"resultCode"` // 结果码,标识请求的具体结果状态
ResultDesc any `json:"resultDesc"` // 结果描述,提供额外的结果信息
} `json:"result"`
GetDiskResult struct {
ParentCatalogID string `json:"parentCatalogID"` // 父目录ID,标识当前列表所在的父目录
NodeCount int `json:"nodeCount"` // 节点数量,记录目录和文件的总数
CatalogList []Catalog `json:"catalogList"` // 目录列表,包含当前目录下的所有子目录
ContentList []Content `json:"contentList"` // 文件列表,包含当前目录下的所有文件
IsCompleted int `json:"isCompleted"` // 是否完成,标识列表是否已全部加载
} `json:"getDiskResult"`
} `json:"data"`
}
GetDiskResp 表示获取磁盘内容的响应结构 包含目录和文件列表,以及是否完成的标志
type InterLayerUploadResult ¶
type InterLayerUploadResult struct {
XMLName xml.Name `xml:"result"` // XML 节点名称
Text string `xml:",chardata"` // 文本内容
ResultCode int `xml:"resultCode"` // 结果码,标识分片上传的结果状态
Msg string `xml:"msg"` // 消息,提供分片上传的额外信息或错误描述
}
InterLayerUploadResult 表示分片上传的 XML 响应结构 包含分片上传的结果码和消息
type ParallelHashCtx ¶
type ParallelHashCtx struct {
PartOffset int64 `json:"partOffset"` // 分片偏移量,记录分片在文件中的起始位置
}
ParallelHashCtx 表示分片上传的哈希上下文 包含分片偏移量信息,用于分片上传的校验
type PartInfo ¶
type PartInfo struct {
PartNumber int64 `json:"partNumber"` // 分片编号,标识分片的顺序
PartSize int64 `json:"partSize"` // 分片大小,记录分片的大小(字节)
ParallelHashCtx ParallelHashCtx `json:"parallelHashCtx"` // 分片哈希上下文,包含分片的哈希信息
}
PartInfo 表示分片上传的分片信息 包含分片编号、大小和哈希上下文,用于分片上传管理
type PersonalFileItem ¶
type PersonalFileItem struct {
FileID string `json:"fileId"` // 文件ID,唯一标识一个文件
Name string `json:"name"` // 文件名,用于显示和识别文件
Size int64 `json:"size"` // 文件大小,单位为字节
Type string `json:"type"` // 文件类型,标识文件是文件夹还是文件
CreatedAt string `json:"createdAt"` // 创建时间,记录文件创建的时间戳
UpdatedAt string `json:"updatedAt"` // 更新时间,记录文件最后更新的时间戳
Thumbnails []PersonalThumbnail `json:"thumbnailUrls"` // 缩略图列表,包含文件的缩略图信息
}
PersonalFileItem 表示新版个人云的文件项 包含文件的基本信息和缩略图列表
type PersonalListResp ¶
type PersonalListResp struct {
BaseResp
Data struct {
Items []PersonalFileItem `json:"items"` // 文件项列表,包含当前页的文件和目录
NextPageCursor string `json:"nextPageCursor"` // 下一页游标,用于获取下一页数据
}
}
PersonalListResp 表示新版个人云的文件列表响应 包含文件项列表和下一页游标,用于分页加载
type PersonalPartInfo ¶
type PersonalPartInfo struct {
PartNumber int `json:"partNumber"` // 分片编号,标识分片的顺序
UploadURL string `json:"uploadUrl"` // 上传URL,用于上传该分片的地址
}
PersonalPartInfo 表示新版个人云分片上传的分片信息 包含分片编号和上传URL,用于分片上传
type PersonalThumbnail ¶
type PersonalThumbnail struct {
Style string `json:"style"` // 缩略图样式,标识缩略图的类型或尺寸
URL string `json:"url"` // 缩略图URL,用于获取缩略图的地址
}
PersonalThumbnail 表示新版个人云的缩略图信息 包含缩略图的样式和URL,用于文件预览
type PersonalUploadResp ¶
type PersonalUploadResp struct {
BaseResp
Data struct {
FileID string `json:"fileId"` // 文件ID,上传后分配的唯一标识
FileName string `json:"fileName"` // 文件名,上传文件的名称
PartInfos []PersonalPartInfo `json:"partInfos"` // 分片信息列表,包含各分片的上传信息
Exist bool `json:"exist"` // 是否存在,标识文件是否已存在
RapidUpload bool `json:"rapidUpload"` // 是否秒传,标识文件是否通过秒传方式上传
UploadID string `json:"uploadId"` // 上传ID,唯一标识一个上传任务
}
}
PersonalUploadResp 表示新版个人云上传响应 包含文件ID、文件名、分片信息等上传结果
type PersonalUploadURLResp ¶ added in v4.2.0
type PersonalUploadURLResp struct {
BaseResp
Data struct {
FileID string `json:"fileId"` // 文件ID,唯一标识一个文件
UploadID string `json:"uploadId"` // 上传ID,唯一标识一个上传任务
PartInfos []PersonalPartInfo `json:"partInfos"` // 分片信息列表,包含各分片的上传URL
}
}
PersonalUploadURLResp 表示新版个人云获取分片上传 URL 响应 包含文件ID、上传ID和分片信息列表
type QueryContentListResp ¶
type QueryContentListResp struct {
BaseResp
Data struct {
Result struct {
ResultCode string `json:"resultCode"` // 结果码,标识请求的结果状态
ResultDesc string `json:"resultDesc"` // 结果描述,提供额外的结果信息
} `json:"result"`
Path string `json:"path"` // 路径,当前列表所在的路径
CloudContentList []CloudContent `json:"cloudContentList"` // 文件列表,包含当前路径下的所有文件
CloudCatalogList []CloudCatalog `json:"cloudCatalogList"` // 目录列表,包含当前路径下的所有目录
TotalCount int `json:"totalCount"` // 总数,记录文件和目录的总数
RecallContent any `json:"recallContent"` // 回收内容,可能是回收站相关信息
} `json:"data"`
}
QueryContentListResp 表示家庭云内容列表响应 包含路径、文件列表、目录列表和总数等信息
type QueryGroupContentListResp ¶
type QueryGroupContentListResp struct {
BaseResp
Data struct {
Result struct {
ResultCode string `json:"resultCode"` // 结果码,标识请求的结果状态
ResultDesc string `json:"resultDesc"` // 结果描述,提供额外的结果信息
} `json:"result"`
GetGroupContentResult struct {
ParentCatalogID string `json:"parentCatalogID"` // 父目录ID,标识当前列表所在的父目录
CatalogList []struct {
Catalog
Path string `json:"path"` // 路径,目录的具体路径
} `json:"catalogList"`
ContentList []Content `json:"contentList"` // 文件列表,包含当前目录下的所有文件
NodeCount int `json:"nodeCount"` // 节点数量,记录目录和文件的总数
CtlgCnt int `json:"ctlgCnt"` // 目录数量,记录目录的总数
ContCnt int `json:"contCnt"` // 文件数量,记录文件的总数
} `json:"getGroupContentResult"`
} `json:"data"`
}
QueryGroupContentListResp 表示群组云内容列表响应 包含父目录ID、目录列表、文件列表和节点数量等信息
type QueryRoutePolicyResp ¶
type QueryRoutePolicyResp struct {
Success bool `json:"success"` // 请求是否成功,true 表示成功,false 表示失败
Code string `json:"code"` // 状态码,标识请求的具体结果状态
Message string `json:"message"` // 消息,提供请求的额外信息或错误描述
Data struct {
RoutePolicyList []struct {
SiteID string `json:"siteID"` // 站点ID,唯一标识一个站点
SiteCode string `json:"siteCode"` // 站点代码,标识站点的编码
ModName string `json:"modName"` // 模块名称,标识具体的服务模块
HTTPURL string `json:"httpUrl"` // HTTP URL,用于HTTP协议访问服务
HTTPSURL string `json:"httpsUrl"` // HTTPS URL,用于HTTPS协议访问服务
EnvID string `json:"envID"` // 环境ID,标识服务的环境
ExtInfo string `json:"extInfo"` // 扩展信息,提供额外的服务信息
HashName string `json:"hashName"` // 哈希名称,用于特定场景的哈希标识
ModAddrType int `json:"modAddrType"` // 模块地址类型,标识地址的类型或格式
} `json:"routePolicyList"`
} `json:"data"`
}
QueryRoutePolicyResp 表示路由策略查询响应 包含路由策略列表,用于确定云盘服务的访问地址
type RefreshTokenResp ¶
type RefreshTokenResp struct {
XMLName xml.Name `xml:"root"` // XML 节点名称
Return string `xml:"return"` // 返回值,标识刷新操作的结果状态
Token string `xml:"token"` // 新的 token,刷新后的授权令牌
Expiretime int32 `xml:"expiretime"` // 过期时间,记录 token 的有效期
AccessToken string `xml:"accessToken"` // 访问 token,可能用于特定场景的访问授权
Desc string `xml:"desc"` // 描述,提供刷新操作的额外信息或错误描述
}
RefreshTokenResp 表示刷新 token 的 XML 响应结构 包含刷新后的 token 信息和过期时间
type UploadResp ¶
type UploadResp struct {
BaseResp
Data struct {
Result struct {
ResultCode string `json:"resultCode"` // 结果码,标识上传请求的结果状态
ResultDesc any `json:"resultDesc"` // 结果描述,提供额外的上传结果信息
} `json:"result"`
UploadResult struct {
UploadTaskID string `json:"uploadTaskID"` // 上传任务ID,唯一标识一个上传任务
RedirectionURL string `json:"redirectionUrl"` // 上传重定向URL,用于实际文件上传的地址
NewContentIDList []struct {
ContentID string `json:"contentID"` // 文件ID,上传后分配的唯一标识
ContentName string `json:"contentName"` // 文件名,上传文件的名称
IsNeedUpload string `json:"isNeedUpload"` // 是否需要上传,标识文件是否需要实际上传
FileEtag int64 `json:"fileEtag"` // 文件Etag,用于文件版本控制
FileVersion int64 `json:"fileVersion"` // 文件版本,记录文件的版本号
OverridenFlag int `json:"overridenFlag"` // 覆盖标志,标识是否覆盖已有文件
} `json:"newContentIDList"`
CatalogIDList any `json:"catalogIDList"` // 目录ID列表,与上传文件关联的目录信息
IsSlice any `json:"isSlice"` // 是否分片,标识上传是否采用分片方式
} `json:"uploadResult"`
} `json:"data"`
}
UploadResp 表示上传文件的响应结构 包含上传任务ID、重定向URL和文件ID列表等信息
type Yun139 ¶
type Yun139 struct {
model.Storage
Addition
Account string // 账号,存储用户账号信息
PersonalCloudHost string // 个人云主机地址,从路由策略中获取
// contains filtered or unexported fields
}
Yun139 实现 139 云盘驱动的主结构体,包含所有云盘操作方法 继承 model.Storage,包含 Addition 配置、定时器、账号等信息 该结构体是驱动的核心,负责与 139 云盘 API 交互和管理文件操作
func (*Yun139) Config ¶
Config 返回驱动的元配置信息 该方法返回 139 云盘驱动的基本配置,如名称、是否支持本地排序等 返回值: driver.Config 结构体,包含驱动的元信息
func (*Yun139) Copy ¶
Copy 复制文件或文件夹到目标目录,自动根据类型分流 该方法用于将源对象复制到目标目录,根据云盘类型调用不同的实现 参数 ctx: 上下文,srcObj: 源对象,dstDir: 目标目录 返回值: 复制成功返回 nil,否则返回错误
func (*Yun139) Drop ¶
Drop 停止定时任务,清理引用 该方法在驱动卸载时调用,用于清理资源和停止定时任务 参数 ctx: 上下文,用于控制清理过程 返回值: 清理成功返回 nil,否则返回错误
func (*Yun139) GetAddition ¶
func (d *Yun139) GetAddition() driver.Additional
GetAddition 返回驱动的附加配置项 该方法返回 139 云盘驱动的附加配置,如授权信息、云盘类型等 返回值: driver.Additional 接口,指向 Addition 结构体
func (*Yun139) Init ¶
Init 初始化驱动,包括 token 刷新、路由策略查询、定时任务等 该方法在驱动启动时调用,用于设置驱动的初始状态 参数 ctx: 上下文,用于控制初始化过程 返回值: 初始化成功返回 nil,否则返回错误
func (*Yun139) InitReference ¶
InitReference 设置引用存储,用于多实例共享 token 该方法用于设置一个引用驱动实例,以便多个驱动实例共享同一个 token 参数 storage: 驱动实例,需要是 Yun139 类型 返回值: 设置成功返回 nil,否则返回错误
func (*Yun139) Link ¶
func (d *Yun139) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*model.Link, error)
Link 获取文件的下载直链,自动根据类型分流 该方法用于获取指定文件的下载链接,根据云盘类型调用不同的实现 参数 ctx: 上下文,file: 文件对象,args: 链接参数 返回值: 下载链接对象,错误信息
func (*Yun139) List ¶
List 列出指定目录下的所有文件和文件夹,自动根据类型分流 该方法用于获取指定目录的内容列表,根据云盘类型调用不同的实现 参数 ctx: 上下文,dir: 目录对象,args: 列表参数 返回值: 文件和文件夹的对象列表,错误信息
func (*Yun139) MakeDir ¶
MakeDir 在指定目录下创建新文件夹,自动根据类型分流 该方法用于在指定目录下创建新文件夹,根据云盘类型调用不同的实现 参数 ctx: 上下文,parentDir: 父目录对象,dirName: 新文件夹名称 返回值: 创建成功返回 nil,否则返回错误
func (*Yun139) Move ¶
Move 移动文件或文件夹到目标目录,自动根据类型分流 该方法用于将源对象移动到目标目录,根据云盘类型调用不同的实现 参数 ctx: 上下文,srcObj: 源对象,dstDir: 目标目录 返回值: 移动后的对象,错误信息
func (*Yun139) Put ¶
func (d *Yun139) Put(ctx context.Context, dstDir model.Obj, stream model.FileStreamer, up driver.UpdateProgress) error
Put 上传文件到目标目录,自动处理分片、冲突、进度等 该方法用于将文件上传到指定目录,支持分片上传、断点续传、冲突处理等功能 根据云盘类型调用不同的实现,支持自定义分片大小和进度回调 参数:
- ctx: 上下文,用于控制上传过程和取消操作
- dstDir: 目标目录对象,指定上传到哪个目录
- stream: 文件流,包含文件内容、名称、大小等信息
- up: 进度回调函数,用于报告上传进度
返回值: 上传成功返回 nil,否则返回错误