_139

package
v4.3.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 8, 2025 License: AGPL-3.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
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

func (d *Yun139) Config() driver.Config

Config 返回驱动的元配置信息 该方法返回 139 云盘驱动的基本配置,如名称、是否支持本地排序等 返回值: driver.Config 结构体,包含驱动的元信息

func (*Yun139) Copy

func (d *Yun139) Copy(ctx context.Context, srcObj, dstDir model.Obj) error

Copy 复制文件或文件夹到目标目录,自动根据类型分流 该方法用于将源对象复制到目标目录,根据云盘类型调用不同的实现 参数 ctx: 上下文,srcObj: 源对象,dstDir: 目标目录 返回值: 复制成功返回 nil,否则返回错误

func (*Yun139) Drop

func (d *Yun139) Drop(ctx context.Context) error

Drop 停止定时任务,清理引用 该方法在驱动卸载时调用,用于清理资源和停止定时任务 参数 ctx: 上下文,用于控制清理过程 返回值: 清理成功返回 nil,否则返回错误

func (*Yun139) GetAddition

func (d *Yun139) GetAddition() driver.Additional

GetAddition 返回驱动的附加配置项 该方法返回 139 云盘驱动的附加配置,如授权信息、云盘类型等 返回值: driver.Additional 接口,指向 Addition 结构体

func (*Yun139) Init

func (d *Yun139) Init(ctx context.Context) error

Init 初始化驱动,包括 token 刷新、路由策略查询、定时任务等 该方法在驱动启动时调用,用于设置驱动的初始状态 参数 ctx: 上下文,用于控制初始化过程 返回值: 初始化成功返回 nil,否则返回错误

func (*Yun139) InitReference

func (d *Yun139) InitReference(storage driver.Driver) error

InitReference 设置引用存储,用于多实例共享 token 该方法用于设置一个引用驱动实例,以便多个驱动实例共享同一个 token 参数 storage: 驱动实例,需要是 Yun139 类型 返回值: 设置成功返回 nil,否则返回错误

func (d *Yun139) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*model.Link, error)

Link 获取文件的下载直链,自动根据类型分流 该方法用于获取指定文件的下载链接,根据云盘类型调用不同的实现 参数 ctx: 上下文,file: 文件对象,args: 链接参数 返回值: 下载链接对象,错误信息

func (*Yun139) List

func (d *Yun139) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([]model.Obj, error)

List 列出指定目录下的所有文件和文件夹,自动根据类型分流 该方法用于获取指定目录的内容列表,根据云盘类型调用不同的实现 参数 ctx: 上下文,dir: 目录对象,args: 列表参数 返回值: 文件和文件夹的对象列表,错误信息

func (*Yun139) MakeDir

func (d *Yun139) MakeDir(ctx context.Context, parentDir model.Obj, dirName string) error

MakeDir 在指定目录下创建新文件夹,自动根据类型分流 该方法用于在指定目录下创建新文件夹,根据云盘类型调用不同的实现 参数 ctx: 上下文,parentDir: 父目录对象,dirName: 新文件夹名称 返回值: 创建成功返回 nil,否则返回错误

func (*Yun139) Move

func (d *Yun139) Move(ctx context.Context, srcObj, dstDir model.Obj) (model.Obj, error)

Move 移动文件或文件夹到目标目录,自动根据类型分流 该方法用于将源对象移动到目标目录,根据云盘类型调用不同的实现 参数 ctx: 上下文,srcObj: 源对象,dstDir: 目标目录 返回值: 移动后的对象,错误信息

func (*Yun139) Other

func (d *Yun139) Other(ctx context.Context, args model.OtherArgs) (any, error)

Other 扩展接口,支持视频预览等特殊操作

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,否则返回错误

func (*Yun139) Remove

func (d *Yun139) Remove(ctx context.Context, obj model.Obj) error

Remove 删除文件或文件夹,自动根据类型分流 该方法用于删除文件或文件夹,根据云盘类型调用不同的实现 参数 ctx: 上下文,obj: 要删除的对象 返回值: 删除成功返回 nil,否则返回错误

func (*Yun139) Rename

func (d *Yun139) Rename(ctx context.Context, srcObj model.Obj, newName string) error

Rename 重命名文件或文件夹,自动根据类型分流 该方法用于重命名文件或文件夹,根据云盘类型调用不同的实现 参数 ctx: 上下文,srcObj: 源对象,newName: 新名称 返回值: 重命名成功返回 nil,否则返回错误

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL