Skip to content

feat(drivers): Add a new storage driver for Tencent Cloud Object Storage (COS) using the official cos-go-sdk-v5 SDK#2587

Open
521141 wants to merge 1 commit into
OpenListTeam:mainfrom
521141:main
Open

feat(drivers): Add a new storage driver for Tencent Cloud Object Storage (COS) using the official cos-go-sdk-v5 SDK#2587
521141 wants to merge 1 commit into
OpenListTeam:mainfrom
521141:main

Conversation

@521141

@521141 521141 commented Jun 6, 2026

Copy link
Copy Markdown

Features:

  • List objects with pagination via Bucket.Get
  • Generate presigned download URLs via GetPresignedURL2
  • Upload files with progress tracking and context cancellation
  • Copy/Move/Rename objects with server-side copy
  • Recursive directory operations (copy, delete)
  • Direct upload support with presigned PUT URLs
  • Custom domain support for download links
  • Configurable presigned URL expiration

Summary / 摘要

This PR adds a new TencnetCOS storage driver that enables OpenList to manage files stored in Tencent Cloud Object Storage (COS). The driver
uses the official cos-go-sdk-v5 SDK for authentication and API operations, following the same patterns as the existing S3 driver.

Implementation details:

  • driver.go: Implements driver.Driver and driver.Getter interfaces with full CRUD operations (List, Get, Put, Copy, Move, Rename,
    Remove, MakeDir, Link, DirectUpload)
  • meta.go: Defines the Addition struct with required fields (Bucket, Region, SecretID, SecretKey) and optional fields (CustomHost,
    SignURLExpire, Placeholder, EnableDirectUpload)
  • util.go: Helper functions for object listing with pagination, recursive copy/delete, and time parsing

No breaking changes, API changes, or storage format changes.

  • This PR has breaking changes.
    / 此 PR 包含破坏性变更。
  • This PR changes public API, config, storage format, or migration behavior.
    / 此 PR 修改了公开 API、配置、存储格式或迁移行为。
  • This PR requires corresponding changes in related repositories.
    / 此 PR 需要关联仓库同步修改。

Related repository PRs / 关联仓库 PR:

  • OpenList-Frontend: N/A
  • OpenList-Docs: N/A

Related Issues / 关联 Issue

Relates to #376

Testing / 测试

  • go test ./...
  • Manual test / 手动测试:
    • Built the driver successfully with go build ./drivers/tencent_cos/
    • Verified driver registration via API (/api/admin/driver/list shows TencnetCOS with correct config fields)
    • Verified go vet ./drivers/tencent_cos/ passes with no warnings
    • Tested against running OpenList server instance

Checklist / 检查清单

  • I have read CONTRIBUTING.
    / 我已阅读 CONTRIBUTING
  • I confirm this contribution follows the repository license, contribution policy, and code of conduct.
    / 我确认此贡献符合仓库许可证、贡献规范和行为准则。
  • I have formatted the changed code with gofmt, go fmt, or prettier where applicable.
    / 我已按适用情况使用 gofmtgo fmtprettier 格式化变更代码。
  • I have requested review from relevant maintainers or code owners where applicable.
    / 我已在适用情况下请求相关维护者或代码所有者审查。

AI Disclosure / AI 使用声明

  • This PR includes AI-assisted content.
    / 此 PR 包含 AI 辅助内容。

Tools used / 使用工具:

  • ChatGPT
  • Codex
  • GitHub Copilot
  • Claude
  • Gemini
  • Other (please specify) / 其他(请注明):

Usage scope / 使用范围:

  • Code generation / 代码生成

  • Refactoring / 重构

  • Documentation / 文档

  • Tests / 测试

  • Translation / 翻译

  • Review assistance / 审查辅助

  • I have reviewed and validated all AI-assisted content included in this PR.
    / 我已审核并验证此 PR 中的所有 AI 辅助内容。

  • I have ensured that all AI-assisted commits include Co-Authored-By attribution.
    / 我已确保所有 AI 辅助提交都包含 Co-Authored-By 归属信息。

  • I can reproduce all AI-assisted content included in this PR without any AI tools.
    / 我可以在没有任何 AI 工具的情况下重现此 PR 中包含的所有 AI 辅助内容。

Add a new storage driver for Tencent Cloud Object Storage (COS) using
the official cos-go-sdk-v5 SDK.

Features:
- List objects with pagination via Bucket.Get
- Generate presigned download URLs via GetPresignedURL2
- Upload files with progress tracking and context cancellation
- Copy/Move/Rename objects with server-side copy
- Recursive directory operations (copy, delete)
- Direct upload support with presigned PUT URLs
- Custom domain support for download links
- Configurable presigned URL expiration

The driver follows the same patterns as the existing S3 driver,
implementing driver.Driver and driver.Getter interfaces.
@521141 521141 changed the title Add a new storage driver for Tencent Cloud Object Storage (COS) using the official cos-go-sdk-v5 SDK feat(drivers): Add a new storage driver for Tencent Cloud Object Storage (COS) using the official cos-go-sdk-v5 SDK Jun 6, 2026
@jyxjjj

jyxjjj commented Jun 8, 2026

Copy link
Copy Markdown
Member

由于引入SDK行为对我们的方向规划具有一定特殊性,请提供引入前后的二进制产物大小对比数据,以便评估其对最终发布包体积的影响。

建议基于仓库 Fork 后通过 GitHub Actions 进行统一环境构建和对比测试,而非依赖本地编译结果,以避免因编译环境、Go 版本或构建参数差异导致的数据偏差。

@521141

521141 commented Jun 9, 2026

Copy link
Copy Markdown
Author

由于引入SDK行为对我们的方向规划具有一定特殊性,请提供引入前后的二进制产物大小对比数据,以便评估其对最终发布包体积的影响。

建议基于仓库 Fork 后通过 GitHub Actions 进行统一环境构建和对比测试,而非依赖本地编译结果,以避免因编译环境、Go 版本或构建参数差异导致的数据偏差。

因为要上课,我最近没有时间,要端午节我才有时间进行测试!

@xrgzs xrgzs added the Module: Driver Driver-Related Issue/PR label Jun 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Module: Driver Driver-Related Issue/PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants