154 Commits

Author SHA1 Message Date
releaser 3f760a62e1 chore(release): prepare for v0.1.3 (#73)
Release / release (push) Successful in 1m6s
storage / test (push) Successful in 1m58s
storage / vulnerabilities (push) Successful in 2m19s
pre-commit / pre-commit (push) Successful in 6m4s
## [0.1.3] - 2026-03-06

### 🐛 Bug Fixes

- *(deps)* Update aws-sdk-go-v2 monorepo (#60)
- *(deps)* Update aws-sdk-go-v2 monorepo (#62)
- *(deps)* Update aws-sdk-go-v2 monorepo (#64)
- *(deps)* Update aws-sdk-go-v2 monorepo (#66)
- *(deps)* Update aws-sdk-go-v2 monorepo (#68)
- *(deps)* Update aws-sdk-go-v2 monorepo (#70)

### ⚙️ Miscellaneous Tasks

- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.9.0 (#56)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.10.1 (#58)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.11.1 (#72)

<!-- generated by git-cliff -->

---

**Note:** Please use **Squash Merge** when merging this PR.

Reviewed-on: #73
Co-authored-by: Unbound Releaser <releaser@unbound.se>
Co-committed-by: Unbound Releaser <releaser@unbound.se>
2026-03-06 20:00:33 +00:00
renovate 7dae9b02d2 chore(deps): update pre-commit hook golangci/golangci-lint to v2.11.1 (#72)
Release / release (push) Successful in 1m12s
storage / test (push) Successful in 1m47s
storage / vulnerabilities (push) Successful in 2m11s
pre-commit / pre-commit (push) Successful in 6m15s
2026-03-06 16:22:39 +00:00
renovate cd97f212aa fix(deps): update aws-sdk-go-v2 monorepo (#70)
Release / release (push) Successful in 57s
storage / test (push) Successful in 2m6s
storage / vulnerabilities (push) Successful in 2m10s
pre-commit / pre-commit (push) Successful in 5m46s
2026-03-05 21:27:29 +00:00
renovate 986731e9a2 fix(deps): update aws-sdk-go-v2 monorepo (#68)
Release / release (push) Successful in 1m3s
storage / test (push) Successful in 2m4s
storage / vulnerabilities (push) Successful in 2m9s
pre-commit / pre-commit (push) Successful in 6m5s
2026-03-03 22:30:51 +00:00
renovate fc07508d7c fix(deps): update aws-sdk-go-v2 monorepo (#66)
Release / release (push) Successful in 1m1s
storage / vulnerabilities (push) Successful in 1m42s
storage / test (push) Successful in 2m51s
pre-commit / pre-commit (push) Successful in 6m52s
2026-02-26 20:35:21 +00:00
renovate 57a8f9e929 fix(deps): update aws-sdk-go-v2 monorepo (#64)
Release / release (push) Successful in 1m5s
storage / vulnerabilities (push) Successful in 3m20s
storage / test (push) Successful in 3m46s
pre-commit / pre-commit (push) Successful in 6m55s
2026-02-24 05:40:23 +00:00
renovate 1c7b12c348 fix(deps): update aws-sdk-go-v2 monorepo (#62)
Release / release (push) Successful in 1m53s
storage / vulnerabilities (push) Successful in 3m54s
storage / test (push) Successful in 4m22s
pre-commit / pre-commit (push) Successful in 7m17s
2026-02-18 21:19:51 +00:00
renovate 6ef6d9712a fix(deps): update aws-sdk-go-v2 monorepo (#60)
Release / release (push) Successful in 54s
storage / test (push) Successful in 1m49s
storage / vulnerabilities (push) Successful in 1m53s
pre-commit / pre-commit (push) Successful in 6m34s
2026-02-17 22:18:55 +00:00
renovate e324605c3e chore(deps): update pre-commit hook golangci/golangci-lint to v2.10.1 (#58)
storage / vulnerabilities (push) Successful in 1m35s
Release / release (push) Successful in 3m50s
storage / test (push) Successful in 4m48s
pre-commit / pre-commit (push) Successful in 11m37s
2026-02-17 17:55:58 +00:00
renovate 9b0ee6b6ac chore(deps): update pre-commit hook golangci/golangci-lint to v2.9.0 (#56)
Release / release (push) Successful in 1m23s
storage / vulnerabilities (push) Successful in 1m34s
storage / test (push) Successful in 5m9s
pre-commit / pre-commit (push) Successful in 11m39s
2026-02-11 13:58:57 +00:00
argoyle 9ada1c5e17 Merge pull request 'chore(release): prepare for v0.1.2' (#52) from next-release into main
Release / release (push) Successful in 43s
storage / vulnerabilities (push) Successful in 1m46s
storage / test (push) Successful in 1m55s
pre-commit / pre-commit (push) Successful in 4m28s
Reviewed-on: #52
2026-02-06 00:31:05 +00:00
releaser d1f616b9d8 chore(release): prepare for v0.1.2
storage / vulnerabilities (pull_request) Successful in 4m9s
storage / test (pull_request) Successful in 6m53s
pre-commit / pre-commit (pull_request) Successful in 11m38s
2026-02-06 00:13:26 +00:00
releaser 20ca082a98 chore(release): prepare for v0.1.2 2026-02-06 00:13:23 +00:00
releaser b0c84530bc chore(release): prepare for v0.1.2
storage / vulnerabilities (pull_request) Successful in 6m40s
pre-commit / pre-commit (pull_request) Successful in 6m56s
storage / test (pull_request) Successful in 7m18s
2026-02-06 00:11:30 +00:00
releaser b220632f74 chore(release): prepare for v0.1.2 2026-02-06 00:11:30 +00:00
releaser ba064f9ae0 chore(release): prepare for v0.1.2 2026-02-06 00:11:30 +00:00
releaser 0bf774486b chore(release): prepare for v0.1.2 2026-02-06 00:11:30 +00:00
releaser ddadc1e882 chore(release): prepare for v0.1.2 2026-02-06 00:11:30 +00:00
releaser 9bf09d0f8f chore(release): prepare for v0.1.2 2026-02-06 00:11:30 +00:00
releaser 59554f49de chore(release): prepare for v0.1.2 2026-02-06 00:11:30 +00:00
releaser 0a657a499e chore(release): prepare for v0.1.2 2026-02-06 00:11:30 +00:00
argoyle 44a0a6bd36 Merge pull request 'refactor: migrate from deprecated s3/manager to s3/transfermanager' (#55) from migrate-to-transfermanager into main
storage / vulnerabilities (push) Successful in 2m1s
storage / test (push) Successful in 2m56s
Release / release (push) Successful in 1m26s
pre-commit / pre-commit (push) Successful in 8m29s
Reviewed-on: #55
2026-02-06 00:10:15 +00:00
argoyle d8decc411e refactor: migrate from deprecated s3/manager to s3/transfermanager
storage / test (pull_request) Successful in 1m25s
storage / vulnerabilities (pull_request) Successful in 1m58s
pre-commit / pre-commit (pull_request) Successful in 5m0s
Replace feature/s3/manager (deprecated) with feature/s3/transfermanager.
Updates Uploader interface, constructor, and all tests to use the new
UploadObject API with transfermanager types.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 01:03:19 +01:00
renovate f260d3c3c0 fix(deps): update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.22.0 (#54)
Release / release (push) Failing after 57s
storage / vulnerabilities (push) Successful in 2m4s
storage / test (push) Successful in 2m28s
pre-commit / pre-commit (push) Failing after 4m5s
2026-02-05 21:21:09 +00:00
renovate dee1809673 fix(deps): update aws-sdk-go-v2 monorepo (#53)
storage / vulnerabilities (push) Successful in 2m14s
Release / release (push) Failing after 4m47s
storage / test (push) Successful in 7m9s
pre-commit / pre-commit (push) Failing after 10m41s
2026-01-28 20:30:57 +00:00
renovate 3c2b55e2cf fix(deps): update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.21.0 (#51)
Release / release (push) Successful in 2m31s
storage / vulnerabilities (push) Successful in 7m10s
storage / test (push) Successful in 7m27s
pre-commit / pre-commit (push) Successful in 10m45s
2026-01-20 21:19:59 +00:00
renovate 734386c3fc chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.24.0 (#50)
Release / release (push) Failing after 2m3s
storage / test (push) Successful in 3m25s
storage / vulnerabilities (push) Successful in 4m47s
pre-commit / pre-commit (push) Successful in 7m25s
2026-01-13 21:33:15 +00:00
renovate cf65c464b8 fix(deps): update aws-sdk-go-v2 monorepo (#49)
Release / release (push) Failing after 57s
storage / vulnerabilities (push) Successful in 8m50s
storage / test (push) Successful in 9m21s
pre-commit / pre-commit (push) Successful in 9m9s
2026-01-09 20:28:17 +00:00
argoyle f49aabcc48 Merge pull request 'chore(release): prepare for v0.1.1' (#47) from next-release into main
Release / release (push) Successful in 3m43s
storage / test (push) Successful in 5m15s
storage / vulnerabilities (push) Successful in 8m30s
pre-commit / pre-commit (push) Successful in 14m18s
Reviewed-on: #47
2026-01-09 13:50:08 +00:00
releaser a359c82df7 chore(release): prepare for v0.1.1
storage / vulnerabilities (pull_request) Successful in 6m6s
storage / test (pull_request) Successful in 6m48s
pre-commit / pre-commit (pull_request) Successful in 13m21s
2026-01-09 13:27:18 +00:00
releaser 8b3b7b95dc chore(release): prepare for v0.1.1 2026-01-09 13:27:13 +00:00
argoyle ec5383af6d Merge pull request 'chore: migrate module path to gitea.unbound.se' (#48) from migrate-to-gitea into main
Release / release (push) Successful in 2m25s
storage / vulnerabilities (push) Successful in 3m14s
storage / test (push) Successful in 4m0s
pre-commit / pre-commit (push) Successful in 6m49s
Reviewed-on: #48
2026-01-09 13:24:25 +00:00
argoyle 41d0edf378 chore: migrate module path to gitea.unbound.se
storage / test (pull_request) Successful in 7m25s
storage / vulnerabilities (pull_request) Successful in 7m22s
pre-commit / pre-commit (pull_request) Successful in 12m49s
Update module path from git.unbound.se to gitea.unbound.se for Go module
discovery over HTTPS.
2026-01-09 13:43:53 +01:00
releaser b399a2cf21 chore(release): prepare for v0.1.1
storage / vulnerabilities (pull_request) Successful in 3m35s
storage / test (pull_request) Successful in 4m10s
pre-commit / pre-commit (pull_request) Successful in 3m37s
2026-01-09 09:10:41 +00:00
releaser 28905c35f5 chore(release): prepare for v0.1.1 2026-01-09 09:08:39 +00:00
argoyle 75b9dc34ac Merge pull request 'chore(deps): update actions/setup-python action to v6' (#46) from renovate/actions-setup-python-6.x into main
storage / test (push) Successful in 3m16s
storage / vulnerabilities (push) Successful in 3m29s
Release / release (push) Successful in 3m45s
pre-commit / pre-commit (push) Successful in 13m3s
Reviewed-on: #46
2026-01-09 09:05:12 +00:00
renovate c823edae25 chore(deps): update actions/setup-python action to v6
storage / vulnerabilities (pull_request) Successful in 4m36s
storage / test (pull_request) Successful in 5m0s
pre-commit / pre-commit (pull_request) Successful in 9m23s
2026-01-09 08:24:10 +00:00
argoyle aaa0204d34 Merge pull request 'chore(release): prepare for v0.1.0' (#18) from next-release into main
Release / release (push) Successful in 1m1s
storage / vulnerabilities (push) Successful in 5m47s
storage / test (push) Successful in 6m44s
pre-commit / pre-commit (push) Successful in 8m51s
Reviewed-on: #18
2026-01-09 07:50:09 +00:00
releaser 44ed391995 chore(release): prepare for v0.1.0 2026-01-09 07:48:28 +00:00
releaser 147c673635 chore(release): prepare for v0.1.0 2026-01-09 07:48:24 +00:00
argoyle 918dc6aa0b Merge pull request 'ci: add pre-commit and release workflows' (#45) from add-workflows into main
storage / vulnerabilities (push) Successful in 1m7s
Release / release (push) Successful in 53s
storage / test (push) Successful in 1m53s
pre-commit / pre-commit (push) Has been cancelled
Reviewed-on: #45
2026-01-09 07:46:53 +00:00
argoyle 57fe122b3a ci: add pre-commit and release workflows
storage / vulnerabilities (pull_request) Successful in 2m24s
storage / test (pull_request) Successful in 2m29s
pre-commit / pre-commit (pull_request) Successful in 5m37s
- Add pre-commit workflow to run hooks on PRs and main branch pushes
- Add release workflow using shared unboundsoftware workflow

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 08:38:46 +01:00
argoyle 9c530267ee Merge pull request 'chore: migrate from GitLab to Gitea' (#44) from migrate-to-gitea into main
storage / test (push) Successful in 2m51s
storage / vulnerabilities (push) Successful in 2m18s
Reviewed-on: #44
2026-01-09 07:04:10 +00:00
argoyle 887d3b8517 chore: migrate from GitLab to Gitea
storage / vulnerabilities (pull_request) Successful in 2m45s
storage / test (pull_request) Successful in 2m57s
- Update module path from gitlab.com/unboundsoftware/storage to
  git.unbound.se/unboundsoftware/storage
- Update import examples in documentation (CLAUDE.md, README.md)
- Remove .gitlab-ci.yml (GitLab CI pipeline no longer needed)
- Remove gitlab-ci-linter pre-commit hook
- Update go-imports local path in pre-commit config

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 08:00:42 +01:00
argoyle 14cb137593 Merge pull request 'chore(deps): update pre-commit hook golangci/golangci-lint to v2.8.0' (#43) from renovate/golangci-golangci-lint-2.x into main
storage / test (push) Successful in 1m50s
storage / vulnerabilities (push) Successful in 4m16s
Reviewed-on: #43
2026-01-09 04:13:22 +00:00
renovate a358aaddd6 chore(deps): update pre-commit hook golangci/golangci-lint to v2.8.0
storage / vulnerabilities (pull_request) Successful in 5m5s
storage / test (pull_request) Successful in 5m21s
2026-01-08 21:25:51 +00:00
argoyle 9632a497e6 Merge pull request 'chore(deps): update actions/setup-go action to v6' (#42) from renovate/actions-setup-go-6.x into main
storage / test (push) Successful in 5m7s
storage / vulnerabilities (push) Successful in 5m38s
Reviewed-on: #42
2026-01-08 15:21:14 +00:00
renovate 3b053e526a chore(deps): update actions/setup-go action to v6
storage / vulnerabilities (pull_request) Successful in 3m53s
storage / test (pull_request) Successful in 4m18s
2026-01-08 15:14:04 +00:00
argoyle 1e331a4ea2 Merge pull request 'chore(deps): update actions/checkout action to v6' (#41) from renovate/actions-checkout-6.x into main
storage / vulnerabilities (push) Successful in 1m36s
storage / test (push) Successful in 1m44s
Reviewed-on: #41
2026-01-08 14:17:10 +00:00
renovate 7f15846a21 chore(deps): update actions/checkout action to v6
storage / vulnerabilities (pull_request) Successful in 7m58s
storage / test (pull_request) Successful in 8m28s
2026-01-08 14:06:02 +00:00
argoyle e00cd62aa6 Merge pull request 'feat: add Gitea Actions workflow' (#40) from feat/gitea-migration into main
storage / vulnerabilities (push) Successful in 3m10s
storage / test (push) Successful in 3m24s
Reviewed-on: #40
2026-01-08 13:11:45 +00:00
argoyle 534427f2b1 feat: add Gitea Actions workflow
storage / test (pull_request) Successful in 1m36s
storage / vulnerabilities (pull_request) Successful in 1m11s
2026-01-08 14:09:14 +01:00
Unbound Release afa466fd9d chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 4f74f5bd24 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 8eb1606e56 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release dd29f1c269 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 904975ab71 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 1cc374cf60 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 5f51c86f6b chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 43eabfe3b0 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 6034eeaebf chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release c9eddfd5ee chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 0995fbee16 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 1bc385da98 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release dfb0b9a32a chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 76a3f6764a chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 00a8a1d70d chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release ad02cf9349 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 33a74b280c chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release fb6d163640 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 7ca6dc1464 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 3195066da5 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 8df96b7155 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 18917e07da chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 81377274c0 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 42a9e97a53 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 24895fe36b chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 345eb623b0 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 76070072ae chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 2ceb9afabf chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 3acc7ec562 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 2d82816eea chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release b721a3c011 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 2a3c248fb2 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 9ea7a26861 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 3394413ba0 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release f288ca48dc chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release e9c5d4a150 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release cb02b810e3 chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release 994c50a2bf chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release aaa9d869ab chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
Unbound Release bb04bdd76a chore(release): prepare for v0.0.4 2025-12-31 21:07:48 +00:00
argoyle 2881b1955a Merge branch 'claude-docs' into 'main'
docs: add CLAUDE.md for Claude Code integration

See merge request unboundsoftware/storage!38
2025-12-31 22:06:04 +01:00
argoyle a92faa9934 docs: add CLAUDE.md for Claude Code integration 2025-12-31 21:56:05 +01:00
argoyle 18fcbf65ea Merge branch 'renovate/golang-1.25.5' into 'main'
chore(deps): update golang:1.25.5 docker digest to ad03ba9

See merge request unboundsoftware/storage!37
2025-12-30 15:55:17 +01:00
Renovate a021138379 chore(deps): update golang:1.25.5 docker digest to ad03ba9 2025-12-30 03:55:05 +00:00
argoyle 4c54c3ab2a Merge branch 'renovate/aws-sdk-go-v2-monorepo' into 'main'
fix(deps): update aws-sdk-go-v2 monorepo

See merge request unboundsoftware/storage!36
2025-12-25 13:33:06 +01:00
Renovate deec94bd6b fix(deps): update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.20.18 2025-12-23 19:56:06 +00:00
argoyle 0060269862 Merge branch 'renovate/aws-sdk-go-v2-monorepo' into 'main'
fix(deps): update aws-sdk-go-v2 monorepo

See merge request unboundsoftware/storage!35
2025-12-17 08:24:18 +01:00
Renovate 0711d64c27 fix(deps): update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.20.17 2025-12-16 20:55:24 +00:00
argoyle 5320aea80b Merge branch 'renovate/aws-sdk-go-v2-monorepo' into 'main'
fix(deps): update aws-sdk-go-v2 monorepo

See merge request unboundsoftware/storage!34
2025-12-15 21:35:56 +01:00
Renovate 65823575b2 fix(deps): update aws-sdk-go-v2 monorepo 2025-12-15 19:55:51 +00:00
argoyle 83937ad10b Merge branch 'renovate/aws-sdk-go-v2-monorepo' into 'main'
fix(deps): update aws-sdk-go-v2 monorepo

See merge request unboundsoftware/storage!33
2025-12-10 06:50:04 +01:00
Renovate a8d28aeaf8 fix(deps): update aws-sdk-go-v2 monorepo 2025-12-09 20:55:19 +00:00
argoyle 27157b7e8c Merge branch 'renovate/golang-1.25.5' into 'main'
chore(deps): update golang:1.25.5 docker digest to 0c27bcf

See merge request unboundsoftware/storage!32
2025-12-09 09:39:23 +01:00
argoyle 64b5cb521e Merge branch 'renovate/aws-sdk-go-v2-monorepo' into 'main'
fix(deps): update aws-sdk-go-v2 monorepo

See merge request unboundsoftware/storage!31
2025-12-09 09:38:51 +01:00
Renovate c29e806a3f chore(deps): update golang:1.25.5 docker digest to 0c27bcf 2025-12-09 01:55:13 +00:00
Renovate d91d425cab fix(deps): update aws-sdk-go-v2 monorepo 2025-12-08 20:55:30 +00:00
argoyle c1b738de97 Merge branch 'renovate/golangci-golangci-lint-2.x' into 'main'
chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.2

See merge request unboundsoftware/storage!30
2025-12-08 09:39:59 +01:00
Renovate 78e826b2d1 chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.2 2025-12-07 16:55:06 +00:00
argoyle 0c6e36a779 Merge branch 'renovate/golangci-golangci-lint-2.x' into 'main'
chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.1

See merge request unboundsoftware/storage!29
2025-12-04 16:23:56 +01:00
Renovate 9361f63633 chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.1 2025-12-04 14:55:31 +00:00
argoyle 6c5e0d90db Merge branch 'renovate/golangci-golangci-lint-2.x' into 'main'
chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.0

See merge request unboundsoftware/storage!28
2025-12-04 08:26:56 +01:00
Renovate 7161e4d37a chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.0 2025-12-03 19:55:11 +00:00
argoyle 2b7e76f84f Merge branch 'renovate/golang-1.x' into 'main'
chore(deps): update golang docker tag to v1.25.5

See merge request unboundsoftware/storage!27
2025-12-02 19:24:22 +01:00
argoyle 8e61272aa0 Merge branch 'renovate/aws-sdk-go-v2-monorepo' into 'main'
fix(deps): update aws-sdk-go-v2 monorepo

See merge request unboundsoftware/storage!26
2025-12-02 19:23:57 +01:00
Renovate 2b746f1635 chore(deps): update golang docker tag to v1.25.5 2025-12-02 17:55:19 +00:00
Renovate fd5983efa8 fix(deps): update aws-sdk-go-v2 monorepo 2025-12-02 16:56:27 +00:00
argoyle bed6e6e492 Merge branch 'renovate/gitleaks-gitleaks-8.x' into 'main'
chore(deps): update pre-commit hook gitleaks/gitleaks to v8.30.0

See merge request unboundsoftware/storage!25
2025-11-27 00:03:29 +01:00
Renovate bb99ff2c34 chore(deps): update pre-commit hook gitleaks/gitleaks to v8.30.0 2025-11-26 18:55:11 +00:00
argoyle 97300e2566 Merge branch 'renovate/aws-sdk-go-v2-monorepo' into 'main'
fix(deps): update aws-sdk-go-v2 monorepo

See merge request unboundsoftware/storage!24
2025-11-26 12:35:13 +01:00
Renovate dfcaed275f fix(deps): update aws-sdk-go-v2 monorepo 2025-11-25 19:56:01 +00:00
argoyle 5e966e3f00 Merge branch 'renovate/aws-sdk-go-v2-monorepo' into 'main'
fix(deps): update aws-sdk-go-v2 monorepo

See merge request unboundsoftware/storage!23
2025-11-22 09:58:04 +01:00
Renovate b0a0b41380 fix(deps): update aws-sdk-go-v2 monorepo 2025-11-21 20:54:56 +00:00
argoyle 71c4c1e41b Merge branch 'renovate/aws-sdk-go-v2-monorepo' into 'main'
fix(deps): update aws-sdk-go-v2 monorepo

See merge request unboundsoftware/storage!22
2025-11-21 11:08:36 +01:00
Renovate 597f329477 fix(deps): update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.20.10 2025-11-20 19:54:31 +00:00
argoyle 61df02c0e1 Merge branch 'renovate/aws-sdk-go-v2-monorepo' into 'main'
fix(deps): update aws-sdk-go-v2 monorepo

See merge request unboundsoftware/storage!21
2025-11-20 09:28:22 +01:00
argoyle 8678a8e400 Merge branch 'renovate/gitleaks-gitleaks-8.x' into 'main'
chore(deps): update pre-commit hook gitleaks/gitleaks to v8.29.1

See merge request unboundsoftware/storage!20
2025-11-20 09:18:53 +01:00
Renovate b7cbf76265 fix(deps): update aws-sdk-go-v2 monorepo 2025-11-19 22:56:04 +00:00
Renovate 7514a3fe63 chore(deps): update pre-commit hook gitleaks/gitleaks to v8.29.1 2025-11-19 21:54:39 +00:00
argoyle 791dbe26ff Merge branch 'renovate/aws-sdk-go-v2-monorepo' into 'main'
fix(deps): update aws-sdk-go-v2 monorepo

See merge request unboundsoftware/storage!19
2025-11-19 22:18:37 +01:00
Renovate 2d48266ad7 fix(deps): update aws-sdk-go-v2 monorepo 2025-11-19 20:58:42 +00:00
argoyle 3b6211ca27 Merge branch 'renovate/golang-1.25.4' into 'main'
chore(deps): update golang:1.25.4 docker digest to efe81fa

See merge request unboundsoftware/storage!18
2025-11-18 16:17:03 +01:00
Renovate 11ec936d32 chore(deps): update golang:1.25.4 docker digest to efe81fa 2025-11-18 11:54:47 +00:00
argoyle 5ceed9f680 Merge branch 'renovate/golangci-golangci-lint-2.x' into 'main'
chore(deps): update pre-commit hook golangci/golangci-lint to v2.6.2

See merge request unboundsoftware/storage!16
2025-11-14 16:20:26 +01:00
Renovate 89eab7fa98 chore(deps): update pre-commit hook golangci/golangci-lint to v2.6.2 2025-11-14 13:54:29 +00:00
argoyle e473db679b Merge branch 'next-release' into 'main'
chore(release): prepare for v0.0.3

See merge request unboundsoftware/storage!8
2025-11-13 10:35:52 +01:00
Unbound Release 4a0bc60044 chore(release): prepare for v0.0.3 2025-11-13 10:35:52 +01:00
argoyle 56d4c97755 Merge branch 'renovate/aws-sdk-go-v2-monorepo' into 'main'
fix(deps): update aws-sdk-go-v2 monorepo

See merge request unboundsoftware/storage!15
2025-11-13 08:58:55 +01:00
Renovate f063a8a775 fix(deps): update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.20.7 2025-11-12 19:55:44 +00:00
argoyle ec66555b0e Merge branch 'renovate/aws-sdk-go-v2-monorepo' into 'main'
fix(deps): update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.20.6

See merge request unboundsoftware/storage!14
2025-11-12 08:59:09 +01:00
Renovate f71ac34794 fix(deps): update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.20.6 2025-11-11 20:54:47 +00:00
argoyle 5665f3f03a Merge branch 'renovate/aws-sdk-go-v2-monorepo' into 'main'
fix(deps): update aws-sdk-go-v2 monorepo

See merge request unboundsoftware/storage!13
2025-11-11 21:13:41 +01:00
Renovate 1245ad1d83 fix(deps): update aws-sdk-go-v2 monorepo 2025-11-11 19:55:39 +00:00
argoyle d3b5010422 Merge branch 'renovate/aws-sdk-go-v2-monorepo' into 'main'
fix(deps): update aws-sdk-go-v2 monorepo

See merge request unboundsoftware/storage!12
2025-11-11 10:36:04 +01:00
Renovate 3307e4c099 fix(deps): update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.20.5 2025-11-10 19:54:47 +00:00
argoyle 62a43f672e Merge branch 'renovate/golang-1.x' into 'main'
chore(deps): update golang docker tag to v1.25.4

See merge request unboundsoftware/storage!11
2025-11-05 23:11:18 +01:00
argoyle e1830fa03a Merge branch 'renovate/aws-sdk-go-v2-monorepo' into 'main'
fix(deps): update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.20.4

See merge request unboundsoftware/storage!10
2025-11-05 23:10:25 +01:00
Renovate cf4b88c67f chore(deps): update golang docker tag to v1.25.4 2025-11-05 21:54:58 +00:00
Renovate 8b4237ac96 fix(deps): update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.20.4 2025-11-05 20:54:59 +00:00
argoyle bd540ed16f Merge branch 'renovate/aws-sdk-go-v2-monorepo' into 'main'
fix(deps): update module github.com/aws/aws-sdk-go-v2/service/s3 to v1.90.0

See merge request unboundsoftware/storage!9
2025-11-05 21:15:26 +01:00
Renovate ded84aefe4 fix(deps): update module github.com/aws/aws-sdk-go-v2/service/s3 to v1.90.0 2025-11-05 19:55:32 +00:00
argoyle 1967c6d8c8 Merge branch 'renovate/gitleaks-gitleaks-8.x' into 'main'
chore(deps): update pre-commit hook gitleaks/gitleaks to v8.29.0

See merge request unboundsoftware/storage!7
2025-11-05 06:51:32 +01:00
Renovate 23455349a6 chore(deps): update pre-commit hook gitleaks/gitleaks to v8.29.0 2025-11-05 01:55:04 +00:00
14 changed files with 294 additions and 127 deletions
+30
View File
@@ -0,0 +1,30 @@
name: storage
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version: stable
- name: Run tests
run: go test -race -coverprofile=coverage.txt ./...
vulnerabilities:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version: stable
- name: Check vulnerabilities
run: |
go install golang.org/x/vuln/cmd/govulncheck@latest
govulncheck ./...
+25
View File
@@ -0,0 +1,25 @@
name: pre-commit
permissions: read-all
on:
pull_request:
push:
branches:
- main
jobs:
pre-commit:
runs-on: ubuntu-latest
env:
SKIP: no-commit-to-branch
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version: stable
- name: Install Go tools
run: go install golang.org/x/tools/cmd/goimports@latest
- uses: actions/setup-python@v6
with:
python-version: '3.14'
- uses: pre-commit/action@v3.0.1
+9
View File
@@ -0,0 +1,9 @@
name: Release
on:
push:
branches: [main]
jobs:
release:
uses: unboundsoftware/shared-workflows/.gitea/workflows/Release.yml@main
+1
View File
@@ -1 +1,2 @@
.claude
coverage.* coverage.*
-38
View File
@@ -1,38 +0,0 @@
include:
- template: 'Workflows/MergeRequest-Pipelines.gitlab-ci.yml'
- project: unboundsoftware/ci-templates
file: Defaults.gitlab-ci.yml
- project: unboundsoftware/ci-templates
file: Release.gitlab-ci.yml
- project: unboundsoftware/ci-templates
file: Pre-Commit-Go.gitlab-ci.yml
image: amd64/golang:1.25.3@sha256:9ac0edc3f9da2acc34e132363b6c2be45378feea0b73c451456a5449853af2aa
stages:
- deps
- test
deps:
stage: deps
script:
- go mod download
test:
stage: test
dependencies:
- deps
script:
- CGO_ENABLED=1 go test -mod=readonly -race -coverprofile=coverage.txt -covermode=atomic -coverpkg=$(go list ./... | tr '\n' , | sed 's/,$//') ./...
- go tool cover -html=coverage.txt -o coverage.html
- go tool cover -func=coverage.txt
- curl -Os https://uploader.codecov.io/latest/linux/codecov
- chmod +x codecov
- ./codecov -t ${CODECOV_TOKEN} -R $CI_PROJECT_DIR -C $CI_COMMIT_SHA -r $CI_PROJECT_PATH
vulnerabilities:
stage: test
image: amd64/golang:1.25.3@sha256:9ac0edc3f9da2acc34e132363b6c2be45378feea0b73c451456a5449853af2aa
script:
- go install golang.org/x/vuln/cmd/govulncheck@latest
- govulncheck ./...
+4 -11
View File
@@ -10,15 +10,8 @@ repos:
args: args:
- --allow-multiple-documents - --allow-multiple-documents
- id: check-added-large-files - id: check-added-large-files
- repo: https://gitlab.com/devopshq/gitlab-ci-linter
rev: v1.0.6
hooks:
- id: gitlab-ci-linter
args:
- --project
- unboundsoftware/storage
- repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook - repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook
rev: v9.23.0 rev: v9.24.0
hooks: hooks:
- id: commitlint - id: commitlint
stages: [ commit-msg ] stages: [ commit-msg ]
@@ -30,17 +23,17 @@ repos:
- id: go-imports - id: go-imports
args: args:
- -local - -local
- gitlab.com/unboundsoftware/storage - gitea.unbound.se/unboundsoftware/storage
- repo: https://github.com/lietu/go-pre-commit - repo: https://github.com/lietu/go-pre-commit
rev: v1.0.0 rev: v1.0.0
hooks: hooks:
- id: go-test - id: go-test
- id: gofumpt - id: gofumpt
- repo: https://github.com/golangci/golangci-lint - repo: https://github.com/golangci/golangci-lint
rev: v2.6.1 rev: v2.11.1
hooks: hooks:
- id: golangci-lint-full - id: golangci-lint-full
- repo: https://github.com/gitleaks/gitleaks - repo: https://github.com/gitleaks/gitleaks
rev: v8.28.0 rev: v8.30.0
hooks: hooks:
- id: gitleaks - id: gitleaks
+3 -1
View File
@@ -1 +1,3 @@
{"version":"v0.0.2"} {
"version": "v0.1.3"
}
+99
View File
@@ -2,6 +2,105 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
## [0.1.3] - 2026-03-06
### 🐛 Bug Fixes
- *(deps)* Update aws-sdk-go-v2 monorepo (#60)
- *(deps)* Update aws-sdk-go-v2 monorepo (#62)
- *(deps)* Update aws-sdk-go-v2 monorepo (#64)
- *(deps)* Update aws-sdk-go-v2 monorepo (#66)
- *(deps)* Update aws-sdk-go-v2 monorepo (#68)
- *(deps)* Update aws-sdk-go-v2 monorepo (#70)
### ⚙️ Miscellaneous Tasks
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.9.0 (#56)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.10.1 (#58)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.11.1 (#72)
## [0.1.2] - 2026-02-06
### 🐛 Bug Fixes
- *(deps)* Update aws-sdk-go-v2 monorepo (#49)
- *(deps)* Update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.21.0 (#51)
- *(deps)* Update aws-sdk-go-v2 monorepo (#53)
- *(deps)* Update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.22.0 (#54)
### 🚜 Refactor
- Migrate from deprecated s3/manager to s3/transfermanager
### ⚙️ Miscellaneous Tasks
- *(deps)* Update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.24.0 (#50)
## [0.1.1] - 2026-01-09
### ⚙️ Miscellaneous Tasks
- *(deps)* Update actions/setup-python action to v6
- Migrate module path to gitea.unbound.se
## [0.1.0] - 2026-01-09
### 🚀 Features
- Add Gitea Actions workflow
### 🐛 Bug Fixes
- *(deps)* Update aws-sdk-go-v2 monorepo
- *(deps)* Update aws-sdk-go-v2 monorepo
- *(deps)* Update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.20.10
- *(deps)* Update aws-sdk-go-v2 monorepo
- *(deps)* Update aws-sdk-go-v2 monorepo
- *(deps)* Update aws-sdk-go-v2 monorepo
- *(deps)* Update aws-sdk-go-v2 monorepo
- *(deps)* Update aws-sdk-go-v2 monorepo
- *(deps)* Update aws-sdk-go-v2 monorepo
- *(deps)* Update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.20.17
- *(deps)* Update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.20.18
### 📚 Documentation
- Add CLAUDE.md for Claude Code integration
### ⚙️ Miscellaneous Tasks
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.6.2
- *(deps)* Update golang:1.25.4 docker digest to efe81fa
- *(deps)* Update pre-commit hook gitleaks/gitleaks to v8.29.1
- *(deps)* Update pre-commit hook gitleaks/gitleaks to v8.30.0
- *(deps)* Update golang docker tag to v1.25.5
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.7.0
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.7.1
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.7.2
- *(deps)* Update golang:1.25.5 docker digest to 0c27bcf
- *(deps)* Update golang:1.25.5 docker digest to ad03ba9
- *(deps)* Update actions/checkout action to v6
- *(deps)* Update actions/setup-go action to v6
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.8.0
- Migrate from GitLab to Gitea
- Add pre-commit and release workflows
## [0.0.3] - 2025-11-13
### 🐛 Bug Fixes
- *(deps)* Update module github.com/aws/aws-sdk-go-v2/service/s3 to v1.90.0
- *(deps)* Update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.20.4
- *(deps)* Update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.20.5
- *(deps)* Update aws-sdk-go-v2 monorepo
- *(deps)* Update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.20.6
- *(deps)* Update module github.com/aws/aws-sdk-go-v2/feature/s3/manager to v1.20.7
### ⚙️ Miscellaneous Tasks
- *(deps)* Update pre-commit hook gitleaks/gitleaks to v8.29.0
- *(deps)* Update golang docker tag to v1.25.4
## [0.0.2] - 2025-11-04 ## [0.0.2] - 2025-11-04
### 🐛 Bug Fixes ### 🐛 Bug Fixes
+43
View File
@@ -0,0 +1,43 @@
# storage
Standalone Go library for AWS S3 storage operations.
**Note:** This is an independent library, not part of the Shiny ecosystem, though it is currently only used by Shiny services.
## Purpose
Provides standardized S3 object storage utilities with presigned URL generation. Used by services that need to store and serve files (PDFs, images, etc.).
## Usage
```go
import "gitea.unbound.se/unboundsoftware/storage"
// Option 1: Managed uploads (multipart, 5MB part size) - loads AWS config automatically
s3Storage, err := storage.New("my-bucket")
// Option 2: Direct uploads with custom AWS config
cfg, _ := config.LoadDefaultConfig(context.Background())
s3Storage := storage.NewS3(cfg, "my-bucket")
// Upload and get presigned URL (15-minute expiration)
url, err := s3Storage.Store("path/to/file.pdf", reader, "application/pdf")
```
## Features
- **Managed uploads** (`New`) - Uses upload manager with 5MB multipart chunks for large files
- **Direct uploads** (`NewS3`) - Uses PutObject directly, allows custom AWS config
- **Presigned URLs** - 15-minute expiration for secure access
## Configuration
Uses AWS SDK v2, loading config from:
- Environment variables (`AWS_REGION`, `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`)
- Shared config files (`~/.aws/config`, `~/.aws/credentials`)
- IAM roles (on AWS infrastructure)
## Development
- Go 1.23+
- Run tests: `go test ./...`
+2 -2
View File
@@ -14,7 +14,7 @@ Shared storage utilities for AWS S3.
### Using the Upload Manager (recommended for large files) ### Using the Upload Manager (recommended for large files)
```go ```go
import "gitlab.com/unboundsoftware/storage" import "gitea.unbound.se/unboundsoftware/storage"
// Create storage with automatic AWS config loading // Create storage with automatic AWS config loading
s3Storage, err := storage.New("my-bucket") s3Storage, err := storage.New("my-bucket")
@@ -31,7 +31,7 @@ url, err := s3Storage.Store("path/to/file.pdf", fileReader, "application/pdf")
```go ```go
import ( import (
"github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/config"
"gitlab.com/unboundsoftware/storage" "git.unbound.se/unboundsoftware/storage"
) )
// Load custom AWS config // Load custom AWS config
+22 -21
View File
@@ -1,28 +1,29 @@
module gitlab.com/unboundsoftware/storage module gitea.unbound.se/unboundsoftware/storage
go 1.23 go 1.24
require ( require (
github.com/aws/aws-sdk-go-v2 v1.39.6 github.com/aws/aws-sdk-go-v2 v1.41.3
github.com/aws/aws-sdk-go-v2/config v1.31.17 github.com/aws/aws-sdk-go-v2/config v1.32.11
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.20.3 github.com/aws/aws-sdk-go-v2/feature/s3/transfermanager v0.1.8
github.com/aws/aws-sdk-go-v2/service/s3 v1.89.2 github.com/aws/aws-sdk-go-v2/service/s3 v1.96.4
) )
require ( require (
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.3 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.6 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.18.21 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.19.11 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.19 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.19 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.19 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.5 // indirect
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.13 // indirect github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.20 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.6 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.4 // indirect github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.11 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.19 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.13 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.19 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 // indirect github.com/aws/aws-sdk-go-v2/service/signin v1.0.7 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.30.12 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.16 // indirect
github.com/aws/smithy-go v1.23.2 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.41.8 // indirect
github.com/aws/smithy-go v1.24.2 // indirect
) )
+40 -38
View File
@@ -1,38 +1,40 @@
github.com/aws/aws-sdk-go-v2 v1.39.6 h1:2JrPCVgWJm7bm83BDwY5z8ietmeJUbh3O2ACnn+Xsqk= github.com/aws/aws-sdk-go-v2 v1.41.3 h1:4kQ/fa22KjDt13QCy1+bYADvdgcxpfH18f0zP542kZA=
github.com/aws/aws-sdk-go-v2 v1.39.6/go.mod h1:c9pm7VwuW0UPxAEYGyTmyurVcNrbF6Rt/wixFqDhcjE= github.com/aws/aws-sdk-go-v2 v1.41.3/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.3 h1:DHctwEM8P8iTXFxC/QK0MRjwEpWQeM9yzidCRjldUz0= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.6 h1:N4lRUXZpZ1KVEUn6hxtco/1d2lgYhNn1fHkkl8WhlyQ=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.3/go.mod h1:xdCzcZEtnSTKVDOmUZs4l/j3pSV6rpo1WXl5ugNsL8Y= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.6/go.mod h1:lyw7GFp3qENLh7kwzf7iMzAxDn+NzjXEAGjKS2UOKqI=
github.com/aws/aws-sdk-go-v2/config v1.31.17 h1:QFl8lL6RgakNK86vusim14P2k8BFSxjvUkcWLDjgz9Y= github.com/aws/aws-sdk-go-v2/config v1.32.11 h1:ftxI5sgz8jZkckuUHXfC/wMUc8u3fG1vQS0plr2F2Zs=
github.com/aws/aws-sdk-go-v2/config v1.31.17/go.mod h1:V8P7ILjp/Uef/aX8TjGk6OHZN6IKPM5YW6S78QnRD5c= github.com/aws/aws-sdk-go-v2/config v1.32.11/go.mod h1:twF11+6ps9aNRKEDimksp923o44w/Thk9+8YIlzWMmo=
github.com/aws/aws-sdk-go-v2/credentials v1.18.21 h1:56HGpsgnmD+2/KpG0ikvvR8+3v3COCwaF4r+oWwOeNA= github.com/aws/aws-sdk-go-v2/credentials v1.19.11 h1:NdV8cwCcAXrCWyxArt58BrvZJ9pZ9Fhf9w6Uh5W3Uyc=
github.com/aws/aws-sdk-go-v2/credentials v1.18.21/go.mod h1:3YELwedmQbw7cXNaII2Wywd+YY58AmLPwX4LzARgmmA= github.com/aws/aws-sdk-go-v2/credentials v1.19.11/go.mod h1:30yY2zqkMPdrvxBqzI9xQCM+WrlrZKSOpSJEsylVU+8=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 h1:T1brd5dR3/fzNFAQch/iBKeX07/ffu/cLu+q+RuzEWk= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.19 h1:INUvJxmhdEbVulJYHI061k4TVuS3jzzthNvjqvVvTKM=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13/go.mod h1:Peg/GBAQ6JDt+RoBf4meB1wylmAipb7Kg2ZFakZTlwk= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.19/go.mod h1:FpZN2QISLdEBWkayloda+sZjVJL+e9Gl0k1SyTgcswU=
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.20.3 h1:4GNV1lhyELGjMz5ILMRxDvxvOaeo3Ux9Z69S1EgVMMQ= github.com/aws/aws-sdk-go-v2/feature/s3/transfermanager v0.1.8 h1:fuVgGvKIwxwXeznHyzVYtHwUZNG+tAoLMyzmP7eBnvk=
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.20.3/go.mod h1:br7KA6edAAqDGUYJ+zVVPAyMrPhnN+zdt17yTUT6FPw= github.com/aws/aws-sdk-go-v2/feature/s3/transfermanager v0.1.8/go.mod h1:qEZo3wYx35vB0xe9H7S5jXfl/kjhiw0sHnvDusOQ6qU=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 h1:a+8/MLcWlIxo1lF9xaGt3J/u3yOZx+CdSveSNwjhD40= github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.19 h1:/sECfyq2JTifMI2JPyZ4bdRN77zJmr6SrS1eL3augIA=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13/go.mod h1:oGnKwIYZ4XttyU2JWxFrwvhF6YKiK/9/wmE3v3Iu9K8= github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.19/go.mod h1:dMf8A5oAqr9/oxOfLkC/c2LU/uMcALP0Rgn2BD5LWn0=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 h1:HBSI2kDkMdWz4ZM7FjwE7e/pWDEZ+nR95x8Ztet1ooY= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.19 h1:AWeJMk33GTBf6J20XJe6qZoRSJo0WfUhsMdUKhoODXE=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13/go.mod h1:YE94ZoDArI7awZqJzBAZ3PDD2zSfuP7w6P2knOzIn8M= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.19/go.mod h1:+GWrYoaAsV7/4pNHpwh1kiNLXkKaSoppxQq9lbH8Ejw=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 h1:WKuaxf++XKWlHWu9ECbMlha8WOEGm0OUEZqm4K/Gcfk= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.5 h1:clHU5fm//kWS1C2HgtgWxfQbFbx4b6rx+5jzhgX9HrI=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4/go.mod h1:ZWy7j6v1vWGmPReu0iSGvRiise4YI5SkR3OHKTZ6Wuc= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.5/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.13 h1:eg/WYAa12vqTphzIdWMzqYRVKKnCboVPRlvaybNCqPA= github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.20 h1:qi3e/dmpdONhj1RyIZdi6DKKpDXS5Lb8ftr3p7cyHJc=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.13/go.mod h1:/FDdxWhz1486obGrKKC1HONd7krpk38LBt+dutLcN9k= github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.20/go.mod h1:V1K+TeJVD5JOk3D9e5tsX2KUdL7BlB+FV6cBhdobN8c=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 h1:x2Ibm/Af8Fi+BH+Hsn9TXGdT+hKbDd5XOTZxTMxDk7o= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.6 h1:XAq62tBTJP/85lFD5oqOOe7YYgWxY9LvWq8plyDvDVg=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3/go.mod h1:IW1jwyrQgMdhisceG8fQLmQIydcT/jWY21rFhzgaKwo= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.6/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.4 h1:NvMjwvv8hpGUILarKw7Z4Q0w1H9anXKsesMxtw++MA4= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.11 h1:BYf7XNsJMzl4mObARUBUib+j2tf0U//JAAtTnYqvqCw=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.4/go.mod h1:455WPHSwaGj2waRSpQp7TsnpOnBfw8iDfPfbwl7KPJE= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.11/go.mod h1:aEUS4WrNk/+FxkBZZa7tVgp4pGH+kFGW40Y8rCPqt5g=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 h1:kDqdFvMY4AtKoACfzIGD8A0+hbT41KTKF//gq7jITfM= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.19 h1:X1Tow7suZk9UCJHE1Iw9GMZJJl0dAnKXXP1NaSDHwmw=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13/go.mod h1:lmKuogqSU3HzQCwZ9ZtcqOc5XGMqtDK7OIc2+DxiUEg= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.19/go.mod h1:/rARO8psX+4sfjUQXp5LLifjUt8DuATZ31WptNJTyQA=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.13 h1:zhBJXdhWIFZ1acfDYIhu4+LCzdUS2Vbcum7D01dXlHQ= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.19 h1:JnQeStZvPHFHeyky/7LbMlyQjUa+jIBj36OlWm0pzIk=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.13/go.mod h1:JaaOeCE368qn2Hzi3sEzY6FgAZVCIYcC2nwbro2QCh8= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.19/go.mod h1:HGyasyHvYdFQeJhvDHfH7HXkHh57htcJGKDZ+7z+I24=
github.com/aws/aws-sdk-go-v2/service/s3 v1.89.2 h1:xgBWsgaeUESl8A8k80p6yBdexMWDVeiDmJ/pkjohJ7c= github.com/aws/aws-sdk-go-v2/service/s3 v1.96.4 h1:4ExZyubQ6LQQVuF2Qp9OsfEvsTdAWh5Gfwf6PgIdLdk=
github.com/aws/aws-sdk-go-v2/service/s3 v1.89.2/go.mod h1:+wArOOrcHUevqdto9k1tKOF5++YTe9JEcPSc9Tx2ZSw= github.com/aws/aws-sdk-go-v2/service/s3 v1.96.4/go.mod h1:NF3JcMGOiARAss1ld3WGORCw71+4ExDD2cbbdKS5PpA=
github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 h1:0JPwLz1J+5lEOfy/g0SURC9cxhbQ1lIMHMa+AHZSzz0= github.com/aws/aws-sdk-go-v2/service/signin v1.0.7 h1:Y2cAXlClHsXkkOvWZFXATr34b0hxxloeQu/pAZz2row=
github.com/aws/aws-sdk-go-v2/service/sso v1.30.1/go.mod h1:fKvyjJcz63iL/ftA6RaM8sRCtN4r4zl4tjL3qw5ec7k= github.com/aws/aws-sdk-go-v2/service/signin v1.0.7/go.mod h1:idzZ7gmDeqeNrSPkdbtMp9qWMgcBwykA7P7Rzh5DXVU=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 h1:OWs0/j2UYR5LOGi88sD5/lhN6TDLG6SfA7CqsQO9zF0= github.com/aws/aws-sdk-go-v2/service/sso v1.30.12 h1:iSsvB9EtQ09YrsmIc44Heqlx5ByGErqhPK1ZQLppias=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5/go.mod h1:klO+ejMvYsB4QATfEOIXk8WAEwN4N0aBfJpvC+5SZBo= github.com/aws/aws-sdk-go-v2/service/sso v1.30.12/go.mod h1:fEWYKTRGoZNl8tZ77i61/ccwOMJdGxwOhWCkp6TXAr0=
github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 h1:mLlUgHn02ue8whiR4BmxxGJLR2gwU6s6ZzJ5wDamBUs= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.16 h1:EnUdUqRP1CNzt2DkV67tJx6XDN4xlfBFm+bzeNOQVb0=
github.com/aws/aws-sdk-go-v2/service/sts v1.39.1/go.mod h1:E19xDjpzPZC7LS2knI9E6BaRFDK43Eul7vd6rSq2HWk= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.16/go.mod h1:Jic/xv0Rq/pFNCh3WwpH4BEqdbSAl+IyHro8LbibHD8=
github.com/aws/smithy-go v1.23.2 h1:Crv0eatJUQhaManss33hS5r40CG3ZFH+21XSkqMrIUM= github.com/aws/aws-sdk-go-v2/service/sts v1.41.8 h1:XQTQTF75vnug2TXS8m7CVJfC2nniYPZnO1D4Np761Oo=
github.com/aws/smithy-go v1.23.2/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0= github.com/aws/aws-sdk-go-v2/service/sts v1.41.8/go.mod h1:Xgx+PR1NUOjNmQY+tRMnouRp83JRM8pRMw/vCaVhPkI=
github.com/aws/smithy-go v1.24.2 h1:FzA3bu/nt/vDvmnkg+R8Xl46gmzEDam6mZ1hzmwXFng=
github.com/aws/smithy-go v1.24.2/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=
+6 -6
View File
@@ -8,13 +8,13 @@ import (
"github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/aws"
v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4" v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4"
"github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/feature/s3/manager" "github.com/aws/aws-sdk-go-v2/feature/s3/transfermanager"
"github.com/aws/aws-sdk-go-v2/service/s3" "github.com/aws/aws-sdk-go-v2/service/s3"
) )
// Uploader is the interface for uploading objects to S3 using the upload manager // Uploader is the interface for uploading objects to S3 using the transfer manager
type Uploader interface { type Uploader interface {
Upload(ctx context.Context, input *s3.PutObjectInput, opts ...func(*manager.Uploader)) (*manager.UploadOutput, error) UploadObject(ctx context.Context, input *transfermanager.UploadObjectInput, opts ...func(*transfermanager.Options)) (*transfermanager.UploadObjectOutput, error)
} }
// DirectUploader is the interface for uploading objects directly to S3 // DirectUploader is the interface for uploading objects directly to S3
@@ -45,7 +45,7 @@ func (s *S3) Store(path string, content io.Reader, contentType string) (string,
} }
func (s *S3) storeWithManager(path string, content io.Reader, contentType string) (string, error) { func (s *S3) storeWithManager(path string, content io.Reader, contentType string) (string, error) {
out, err := s.svc.Upload(context.Background(), &s3.PutObjectInput{ out, err := s.svc.UploadObject(context.Background(), &transfermanager.UploadObjectInput{
Bucket: aws.String(s.bucket), Bucket: aws.String(s.bucket),
Key: aws.String(path), Key: aws.String(path),
Body: content, Body: content,
@@ -100,8 +100,8 @@ func New(bucket string) (*S3, error) {
return nil, err return nil, err
} }
client := s3.NewFromConfig(cfg) client := s3.NewFromConfig(cfg)
uploader := manager.NewUploader(client, func(u *manager.Uploader) { uploader := transfermanager.New(client, func(o *transfermanager.Options) {
u.PartSize = 5 * 1024 * 1024 o.PartSizeBytes = 5 * 1024 * 1024
}) })
presignClient := s3.NewPresignClient(client) presignClient := s3.NewPresignClient(client)
return &S3{ return &S3{
+10 -10
View File
@@ -10,17 +10,17 @@ import (
"github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/aws"
v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4" v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4"
"github.com/aws/aws-sdk-go-v2/feature/s3/manager" "github.com/aws/aws-sdk-go-v2/feature/s3/transfermanager"
"github.com/aws/aws-sdk-go-v2/service/s3" "github.com/aws/aws-sdk-go-v2/service/s3"
) )
// Mock implementations for testing // Mock implementations for testing
type mockUploader struct { type mockUploader struct {
uploadFunc func(ctx context.Context, input *s3.PutObjectInput, opts ...func(*manager.Uploader)) (*manager.UploadOutput, error) uploadFunc func(ctx context.Context, input *transfermanager.UploadObjectInput, opts ...func(*transfermanager.Options)) (*transfermanager.UploadObjectOutput, error)
} }
func (m *mockUploader) Upload(ctx context.Context, input *s3.PutObjectInput, opts ...func(*manager.Uploader)) (*manager.UploadOutput, error) { func (m *mockUploader) UploadObject(ctx context.Context, input *transfermanager.UploadObjectInput, opts ...func(*transfermanager.Options)) (*transfermanager.UploadObjectOutput, error) {
return m.uploadFunc(ctx, input, opts...) return m.uploadFunc(ctx, input, opts...)
} }
@@ -81,7 +81,7 @@ func TestStore_WithUploadManager_Success(t *testing.T) {
expectedURL := "https://s3.amazonaws.com/test-bucket/path/to/file.pdf?presigned=true" expectedURL := "https://s3.amazonaws.com/test-bucket/path/to/file.pdf?presigned=true"
mockUploader := &mockUploader{ mockUploader := &mockUploader{
uploadFunc: func(ctx context.Context, input *s3.PutObjectInput, opts ...func(*manager.Uploader)) (*manager.UploadOutput, error) { uploadFunc: func(ctx context.Context, input *transfermanager.UploadObjectInput, opts ...func(*transfermanager.Options)) (*transfermanager.UploadObjectOutput, error) {
// Verify input parameters // Verify input parameters
if *input.Bucket != testBucket { if *input.Bucket != testBucket {
t.Errorf("Expected bucket %s, got %s", testBucket, *input.Bucket) t.Errorf("Expected bucket %s, got %s", testBucket, *input.Bucket)
@@ -99,7 +99,7 @@ func TestStore_WithUploadManager_Success(t *testing.T) {
t.Errorf("Expected content %s, got %s", testContent, string(body)) t.Errorf("Expected content %s, got %s", testContent, string(body))
} }
return &manager.UploadOutput{ return &transfermanager.UploadObjectOutput{
Key: aws.String(testPath), Key: aws.String(testPath),
}, nil }, nil
}, },
@@ -149,7 +149,7 @@ func TestStore_WithUploadManager_UploadError(t *testing.T) {
expectedError := errors.New("upload failed") expectedError := errors.New("upload failed")
mockUploader := &mockUploader{ mockUploader := &mockUploader{
uploadFunc: func(ctx context.Context, input *s3.PutObjectInput, opts ...func(*manager.Uploader)) (*manager.UploadOutput, error) { uploadFunc: func(ctx context.Context, input *transfermanager.UploadObjectInput, opts ...func(*transfermanager.Options)) (*transfermanager.UploadObjectOutput, error) {
return nil, expectedError return nil, expectedError
}, },
} }
@@ -191,8 +191,8 @@ func TestStore_WithUploadManager_PresignError(t *testing.T) {
expectedError := errors.New("presign failed") expectedError := errors.New("presign failed")
mockUploader := &mockUploader{ mockUploader := &mockUploader{
uploadFunc: func(ctx context.Context, input *s3.PutObjectInput, opts ...func(*manager.Uploader)) (*manager.UploadOutput, error) { uploadFunc: func(ctx context.Context, input *transfermanager.UploadObjectInput, opts ...func(*transfermanager.Options)) (*transfermanager.UploadObjectOutput, error) {
return &manager.UploadOutput{ return &transfermanager.UploadObjectOutput{
Key: aws.String(testPath), Key: aws.String(testPath),
}, nil }, nil
}, },
@@ -390,8 +390,8 @@ func TestStore_PresignExpiry(t *testing.T) {
var capturedExpiry time.Duration var capturedExpiry time.Duration
mockUploader := &mockUploader{ mockUploader := &mockUploader{
uploadFunc: func(ctx context.Context, input *s3.PutObjectInput, opts ...func(*manager.Uploader)) (*manager.UploadOutput, error) { uploadFunc: func(ctx context.Context, input *transfermanager.UploadObjectInput, opts ...func(*transfermanager.Options)) (*transfermanager.UploadObjectOutput, error) {
return &manager.UploadOutput{Key: aws.String(testPath)}, nil return &transfermanager.UploadObjectOutput{Key: aws.String(testPath)}, nil
}, },
} }