Compare commits
13 Commits
f260d3c3c0
..
v0.1.2
| Author | SHA1 | Date | |
|---|---|---|---|
| 9ada1c5e17 | |||
| d1f616b9d8 | |||
| 20ca082a98 | |||
| b0c84530bc | |||
| b220632f74 | |||
| ba064f9ae0 | |||
| 0bf774486b | |||
| ddadc1e882 | |||
| 9bf09d0f8f | |||
| 59554f49de | |||
| 0a657a499e | |||
| 44a0a6bd36 | |||
|
d8decc411e
|
@@ -2,6 +2,23 @@
|
|||||||
|
|
||||||
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.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
|
## [0.1.1] - 2026-01-09
|
||||||
|
|
||||||
### ⚙️ Miscellaneous Tasks
|
### ⚙️ Miscellaneous Tasks
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ go 1.23
|
|||||||
require (
|
require (
|
||||||
github.com/aws/aws-sdk-go-v2 v1.41.1
|
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/config v1.32.7
|
||||||
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.22.0
|
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
|
github.com/aws/aws-sdk-go-v2/service/s3 v1.96.0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ github.com/aws/aws-sdk-go-v2/credentials v1.19.7 h1:tHK47VqqtJxOymRrNtUXN5SP/zUT
|
|||||||
github.com/aws/aws-sdk-go-v2/credentials v1.19.7/go.mod h1:qOZk8sPDrxhf+4Wf4oT2urYJrYt3RejHSzgAquYeppw=
|
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 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/ec2/imds v1.18.17/go.mod h1:tyw7BOl5bBe/oqvoIeECFJjMdzXoa/dfVz3QQ5lgHGA=
|
||||||
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.22.0 h1:MpkX8EjkwuvyuX9B7+Zgk5M4URb2WQ84Y6jM81n5imw=
|
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/manager v1.22.0/go.mod h1:4V9Pv5sFfMPWQF0Q0zYN6BlV/504dFGaTeogallRqQw=
|
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 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/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 h1:WWLqlh79iO48yLkj1v3ISRNiv+3KdQoZ6JWyfcsyQik=
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user