126 Commits

Author SHA1 Message Date
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
14 changed files with 257 additions and 123 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.*
-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.4@sha256:2476911a55fb171469c5266ee3d81e180fd25592c4f74ae79488fb49578bdc96
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.4@sha256:2476911a55fb171469c5266ee3d81e180fd25592c4f74ae79488fb49578bdc96
script:
- go install golang.org/x/vuln/cmd/govulncheck@latest
- govulncheck ./...
+4 -11
View File
@@ -10,15 +10,8 @@ repos:
args:
- --allow-multiple-documents
- 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
rev: v9.23.0
rev: v9.24.0
hooks:
- id: commitlint
stages: [ commit-msg ]
@@ -30,17 +23,17 @@ repos:
- id: go-imports
args:
- -local
- gitlab.com/unboundsoftware/storage
- gitea.unbound.se/unboundsoftware/storage
- repo: https://github.com/lietu/go-pre-commit
rev: v1.0.0
hooks:
- id: go-test
- id: gofumpt
- repo: https://github.com/golangci/golangci-lint
rev: v2.6.1
rev: v2.8.0
hooks:
- id: golangci-lint-full
- repo: https://github.com/gitleaks/gitleaks
rev: v8.29.0
rev: v8.30.0
hooks:
- id: gitleaks
+3 -1
View File
@@ -1 +1,3 @@
{"version":"v0.0.3"}
{
"version": "v0.1.2"
}
+66
View File
@@ -2,6 +2,72 @@
All notable changes to this project will be documented in this file.
## [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
+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)
```go
import "gitlab.com/unboundsoftware/storage"
import "gitea.unbound.se/unboundsoftware/storage"
// Create storage with automatic AWS config loading
s3Storage, err := storage.New("my-bucket")
@@ -31,7 +31,7 @@ url, err := s3Storage.Store("path/to/file.pdf", fileReader, "application/pdf")
```go
import (
"github.com/aws/aws-sdk-go-v2/config"
"gitlab.com/unboundsoftware/storage"
"git.unbound.se/unboundsoftware/storage"
)
// Load custom AWS config
+20 -19
View File
@@ -1,28 +1,29 @@
module gitlab.com/unboundsoftware/storage
module gitea.unbound.se/unboundsoftware/storage
go 1.23
require (
github.com/aws/aws-sdk-go-v2 v1.39.6
github.com/aws/aws-sdk-go-v2/config v1.31.20
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.20.7
github.com/aws/aws-sdk-go-v2/service/s3 v1.90.2
github.com/aws/aws-sdk-go-v2 v1.41.1
github.com/aws/aws-sdk-go-v2/config v1.32.7
github.com/aws/aws-sdk-go-v2/feature/s3/transfermanager v0.1.2
github.com/aws/aws-sdk-go-v2/service/s3 v1.96.0
)
require (
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.3 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.18.24 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 // indirect
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.4 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.19.7 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.13 // 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/checksum v1.9.4 // 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/s3shared v1.19.13 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.30.3 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.7 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.40.2 // indirect
github.com/aws/smithy-go v1.23.2 // indirect
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.17 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.8 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.17 // indirect
github.com/aws/aws-sdk-go-v2/service/signin v1.0.5 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.30.9 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.41.6 // indirect
github.com/aws/smithy-go v1.24.0 // indirect
)
+38 -36
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.39.6/go.mod h1:c9pm7VwuW0UPxAEYGyTmyurVcNrbF6Rt/wixFqDhcjE=
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.3/go.mod h1:xdCzcZEtnSTKVDOmUZs4l/j3pSV6rpo1WXl5ugNsL8Y=
github.com/aws/aws-sdk-go-v2/config v1.31.20 h1:/jWF4Wu90EhKCgjTdy1DGxcbcbNrjfBHvksEL79tfQc=
github.com/aws/aws-sdk-go-v2/config v1.31.20/go.mod h1:95Hh1Tc5VYKL9NJ7tAkDcqeKt+MCXQB1hQZaRdJIZE0=
github.com/aws/aws-sdk-go-v2/credentials v1.18.24 h1:iJ2FmPT35EaIB0+kMa6TnQ+PwG5A1prEdAw+PsMzfHg=
github.com/aws/aws-sdk-go-v2/credentials v1.18.24/go.mod h1:U91+DrfjAiXPDEGYhh/x29o4p0qHX5HDqG7y5VViv64=
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.13/go.mod h1:Peg/GBAQ6JDt+RoBf4meB1wylmAipb7Kg2ZFakZTlwk=
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.20.7 h1:u8danF+A2Zv//pFZvj5V23v/6XG4AxuSVup5s6nxSnI=
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.20.7/go.mod h1:uvLIvU8iJPEU5so7b6lLDNArWpOX6sRBfL5wBABmlfc=
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.13/go.mod h1:oGnKwIYZ4XttyU2JWxFrwvhF6YKiK/9/wmE3v3Iu9K8=
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.13/go.mod h1:YE94ZoDArI7awZqJzBAZ3PDD2zSfuP7w6P2knOzIn8M=
github.com/aws/aws-sdk-go-v2 v1.41.1 h1:ABlyEARCDLN034NhxlRUSZr4l71mh+T5KAeGh6cerhU=
github.com/aws/aws-sdk-go-v2 v1.41.1/go.mod h1:MayyLB8y+buD9hZqkCW3kX1AKq07Y5pXxtgB+rRFhz0=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.4 h1:489krEF9xIGkOaaX3CE/Be2uWjiXrkCH6gUX+bZA/BU=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.4/go.mod h1:IOAPF6oT9KCsceNTvvYMNHy0+kMF8akOjeDvPENWxp4=
github.com/aws/aws-sdk-go-v2/config v1.32.7 h1:vxUyWGUwmkQ2g19n7JY/9YL8MfAIl7bTesIUykECXmY=
github.com/aws/aws-sdk-go-v2/config v1.32.7/go.mod h1:2/Qm5vKUU/r7Y+zUk/Ptt2MDAEKAfUtKc1+3U1Mo3oY=
github.com/aws/aws-sdk-go-v2/credentials v1.19.7 h1:tHK47VqqtJxOymRrNtUXN5SP/zUTvZKeLx4tH6PGQc8=
github.com/aws/aws-sdk-go-v2/credentials v1.19.7/go.mod h1:qOZk8sPDrxhf+4Wf4oT2urYJrYt3RejHSzgAquYeppw=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17 h1:I0GyV8wiYrP8XpA70g1HBcQO1JlQxCMTW9npl5UbDHY=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17/go.mod h1:tyw7BOl5bBe/oqvoIeECFJjMdzXoa/dfVz3QQ5lgHGA=
github.com/aws/aws-sdk-go-v2/feature/s3/transfermanager v0.1.2 h1:1q8/WwEqZnM/vO4q1gx2g7lHYmyN+o4P7G6EW4zKbRQ=
github.com/aws/aws-sdk-go-v2/feature/s3/transfermanager v0.1.2/go.mod h1:owKRexW+Ir5ACD2UTesmjkQ+w7mcmknLNfwOiKfVLTg=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 h1:xOLELNKGp2vsiteLsvLPwxC+mYmO6OZ8PYgiuPJzF8U=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17/go.mod h1:5M5CI3D12dNOtH3/mk6minaRwI2/37ifCURZISxA/IQ=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 h1:WWLqlh79iO48yLkj1v3ISRNiv+3KdQoZ6JWyfcsyQik=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17/go.mod h1:EhG22vHRrvF8oXSTYStZhJc1aUgKtnJe+aOiFEV90cM=
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.4/go.mod h1:ZWy7j6v1vWGmPReu0iSGvRiise4YI5SkR3OHKTZ6Wuc=
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.13/go.mod h1:/FDdxWhz1486obGrKKC1HONd7krpk38LBt+dutLcN9k=
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.3/go.mod h1:IW1jwyrQgMdhisceG8fQLmQIydcT/jWY21rFhzgaKwo=
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.4/go.mod h1:455WPHSwaGj2waRSpQp7TsnpOnBfw8iDfPfbwl7KPJE=
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.13/go.mod h1:lmKuogqSU3HzQCwZ9ZtcqOc5XGMqtDK7OIc2+DxiUEg=
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.13/go.mod h1:JaaOeCE368qn2Hzi3sEzY6FgAZVCIYcC2nwbro2QCh8=
github.com/aws/aws-sdk-go-v2/service/s3 v1.90.2 h1:DhdbtDl4FdNlj31+xiRXANxEE+eC7n8JQz+/ilwQ8Uc=
github.com/aws/aws-sdk-go-v2/service/s3 v1.90.2/go.mod h1:+wArOOrcHUevqdto9k1tKOF5++YTe9JEcPSc9Tx2ZSw=
github.com/aws/aws-sdk-go-v2/service/sso v1.30.3 h1:NjShtS1t8r5LUfFVtFeI8xLAHQNTa7UI0VawXlrBMFQ=
github.com/aws/aws-sdk-go-v2/service/sso v1.30.3/go.mod h1:fKvyjJcz63iL/ftA6RaM8sRCtN4r4zl4tjL3qw5ec7k=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.7 h1:gTsnx0xXNQ6SBbymoDvcoRHL+q4l/dAFsQuKfDWSaGc=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.7/go.mod h1:klO+ejMvYsB4QATfEOIXk8WAEwN4N0aBfJpvC+5SZBo=
github.com/aws/aws-sdk-go-v2/service/sts v1.40.2 h1:HK5ON3KmQV2HcAunnx4sKLB9aPf3gKGwVAf7xnx0QT0=
github.com/aws/aws-sdk-go-v2/service/sts v1.40.2/go.mod h1:E19xDjpzPZC7LS2knI9E6BaRFDK43Eul7vd6rSq2HWk=
github.com/aws/smithy-go v1.23.2 h1:Crv0eatJUQhaManss33hS5r40CG3ZFH+21XSkqMrIUM=
github.com/aws/smithy-go v1.23.2/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.17 h1:JqcdRG//czea7Ppjb+g/n4o8i/R50aTBHkA7vu0lK+k=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.17/go.mod h1:CO+WeGmIdj/MlPel2KwID9Gt7CNq4M65HUfBW97liM0=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 h1:0ryTNEdJbzUCEWkVXEXoqlXV72J5keC1GvILMOuD00E=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4/go.mod h1:HQ4qwNZh32C3CBeO6iJLQlgtMzqeG17ziAA/3KDJFow=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.8 h1:Z5EiPIzXKewUQK0QTMkutjiaPVeVYXX7KIqhXu/0fXs=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.8/go.mod h1:FsTpJtvC4U1fyDXk7c71XoDv3HlRm8V3NiYLeYLh5YE=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 h1:RuNSMoozM8oXlgLG/n6WLaFGoea7/CddrCfIiSA+xdY=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17/go.mod h1:F2xxQ9TZz5gDWsclCtPQscGpP0VUOc8RqgFM3vDENmU=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.17 h1:bGeHBsGZx0Dvu/eJC0Lh9adJa3M1xREcndxLNZlve2U=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.17/go.mod h1:dcW24lbU0CzHusTE8LLHhRLI42ejmINN8Lcr22bwh/g=
github.com/aws/aws-sdk-go-v2/service/s3 v1.96.0 h1:oeu8VPlOre74lBA/PMhxa5vewaMIMmILM+RraSyB8KA=
github.com/aws/aws-sdk-go-v2/service/s3 v1.96.0/go.mod h1:5jggDlZ2CLQhwJBiZJb4vfk4f0GxWdEDruWKEJ1xOdo=
github.com/aws/aws-sdk-go-v2/service/signin v1.0.5 h1:VrhDvQib/i0lxvr3zqlUwLwJP4fpmpyD9wYG1vfSu+Y=
github.com/aws/aws-sdk-go-v2/service/signin v1.0.5/go.mod h1:k029+U8SY30/3/ras4G/Fnv/b88N4mAfliNn08Dem4M=
github.com/aws/aws-sdk-go-v2/service/sso v1.30.9 h1:v6EiMvhEYBoHABfbGB4alOYmCIrcgyPPiBE1wZAEbqk=
github.com/aws/aws-sdk-go-v2/service/sso v1.30.9/go.mod h1:yifAsgBxgJWn3ggx70A3urX2AN49Y5sJTD1UQFlfqBw=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13 h1:gd84Omyu9JLriJVCbGApcLzVR3XtmC4ZDPcAI6Ftvds=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13/go.mod h1:sTGThjphYE4Ohw8vJiRStAcu3rbjtXRsdNB0TvZ5wwo=
github.com/aws/aws-sdk-go-v2/service/sts v1.41.6 h1:5fFjR/ToSOzB2OQ/XqWpZBmNvmP/pJ1jOWYlFDJTjRQ=
github.com/aws/aws-sdk-go-v2/service/sts v1.41.6/go.mod h1:qgFDZQSD/Kys7nJnVqYlWKnh0SSdMjAi0uSwON4wgYQ=
github.com/aws/smithy-go v1.24.0 h1:LpilSUItNPFr1eY85RYgTIg5eIEPtvFbskaFcmmIUnk=
github.com/aws/smithy-go v1.24.0/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0=
+6 -6
View File
@@ -8,13 +8,13 @@ import (
"github.com/aws/aws-sdk-go-v2/aws"
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/feature/s3/manager"
"github.com/aws/aws-sdk-go-v2/feature/s3/transfermanager"
"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 {
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
@@ -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) {
out, err := s.svc.Upload(context.Background(), &s3.PutObjectInput{
out, err := s.svc.UploadObject(context.Background(), &transfermanager.UploadObjectInput{
Bucket: aws.String(s.bucket),
Key: aws.String(path),
Body: content,
@@ -100,8 +100,8 @@ func New(bucket string) (*S3, error) {
return nil, err
}
client := s3.NewFromConfig(cfg)
uploader := manager.NewUploader(client, func(u *manager.Uploader) {
u.PartSize = 5 * 1024 * 1024
uploader := transfermanager.New(client, func(o *transfermanager.Options) {
o.PartSizeBytes = 5 * 1024 * 1024
})
presignClient := s3.NewPresignClient(client)
return &S3{
+10 -10
View File
@@ -10,17 +10,17 @@ import (
"github.com/aws/aws-sdk-go-v2/aws"
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"
)
// Mock implementations for testing
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...)
}
@@ -81,7 +81,7 @@ func TestStore_WithUploadManager_Success(t *testing.T) {
expectedURL := "https://s3.amazonaws.com/test-bucket/path/to/file.pdf?presigned=true"
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
if *input.Bucket != testBucket {
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))
}
return &manager.UploadOutput{
return &transfermanager.UploadObjectOutput{
Key: aws.String(testPath),
}, nil
},
@@ -149,7 +149,7 @@ func TestStore_WithUploadManager_UploadError(t *testing.T) {
expectedError := errors.New("upload failed")
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
},
}
@@ -191,8 +191,8 @@ func TestStore_WithUploadManager_PresignError(t *testing.T) {
expectedError := errors.New("presign failed")
mockUploader := &mockUploader{
uploadFunc: func(ctx context.Context, input *s3.PutObjectInput, opts ...func(*manager.Uploader)) (*manager.UploadOutput, error) {
return &manager.UploadOutput{
uploadFunc: func(ctx context.Context, input *transfermanager.UploadObjectInput, opts ...func(*transfermanager.Options)) (*transfermanager.UploadObjectOutput, error) {
return &transfermanager.UploadObjectOutput{
Key: aws.String(testPath),
}, nil
},
@@ -390,8 +390,8 @@ func TestStore_PresignExpiry(t *testing.T) {
var capturedExpiry time.Duration
mockUploader := &mockUploader{
uploadFunc: func(ctx context.Context, input *s3.PutObjectInput, opts ...func(*manager.Uploader)) (*manager.UploadOutput, error) {
return &manager.UploadOutput{Key: aws.String(testPath)}, nil
uploadFunc: func(ctx context.Context, input *transfermanager.UploadObjectInput, opts ...func(*transfermanager.Options)) (*transfermanager.UploadObjectOutput, error) {
return &transfermanager.UploadObjectOutput{Key: aws.String(testPath)}, nil
},
}