Skip to content

feat(driver/bunny_storage): add Bunny Storage driver#2472

Open
demogest wants to merge 2 commits into
OpenListTeam:mainfrom
demogest:bunny-storage-driver
Open

feat(driver/bunny_storage): add Bunny Storage driver#2472
demogest wants to merge 2 commits into
OpenListTeam:mainfrom
demogest:bunny-storage-driver

Conversation

@demogest
Copy link
Copy Markdown

@demogest demogest commented May 12, 2026

Description / 描述

Add a new Bunny Storage driver for OpenList.

新增 Bunny Storage 驱动。

Main changes / 主要变更:

  • 支持 Bunny Storage 的列表、上传、下载、创建目录、删除和按路径获取对象。
  • 支持可选 CDN 下载链接,并支持 Bunny CDN Token 签名。
  • 生成 CDN URL 时正确处理 OpenList 挂载路径。

Motivation and Context / 背景

新增Bunny.net的Storage支持,并同步支持Bunny.net CDN。

How Has This Been Tested? / 测试

  • Ran gofmt.
    已运行 gofmt
  • Ran go test ./drivers/bunny_storage ./drivers.
    已运行 go test ./drivers/bunny_storage ./drivers
  • Started OpenList locally and verified the driver appears in the admin driver list.
    已在本地启动 OpenList,并确认该驱动出现在后台驱动列表中。

Checklist / 检查清单

  • I have read the CONTRIBUTING document.
    我已阅读 CONTRIBUTING 文档。
  • I have formatted my code with go fmt or prettier.
    我已使用 go fmtprettier 格式化提交的代码。
  • I have added appropriate labels to this PR (or mentioned needed labels in the description if lacking permissions).
    Needed labels: Module: Driver, enhancement.
  • I have requested review from relevant code authors using the "Request review" feature when applicable.
    Draft PR: review will be requested after the direction is confirmed.
  • I have updated the repository accordingly (If it’s needed).
    Backend-only driver change; no frontend repository change is required.

Add Bunny Storage API support with optional CDN links and token signing.

Cover CDN mount path handling, token signing, and proxy/cache behavior with unit tests.
@demogest demogest marked this pull request as ready for review May 12, 2026 16:13
Comment thread drivers/bunny_storage/driver.go
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Bunny Storage backend driver to OpenList, including storage API operations and optional CDN-based download links with token signing.

Changes:

  • Introduces Bunny Storage driver configuration, registration, object models, API helpers, and CRUD/link behavior.
  • Adds CDN URL generation and optional SHA256/HMAC-SHA256 token signing support.
  • Adds unit tests for URL construction, CDN path handling, signing, link caching, and proxy configuration.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
drivers/all.go Registers the Bunny Storage driver in the driver import list.
drivers/bunny_storage/meta.go Defines driver metadata and configurable Bunny Storage/CDN options.
drivers/bunny_storage/types.go Adds Bunny API response and internal timestamp helper types.
drivers/bunny_storage/driver.go Implements listing, linking, upload, directory creation, deletion, and path lookup.
drivers/bunny_storage/util.go Adds URL normalization, path handling, response parsing, object conversion, and CDN signing helpers.
drivers/bunny_storage/util_test.go Adds tests covering storage/CDN URL behavior, signing, link expiration, and proxy configuration.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

}
if t, err := time.Parse(time.RFC3339Nano, value); err == nil {
return t
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants