feat: add PresignURL method for existing objects
Generate presigned download URLs for objects already stored in S3, valid for 15 minutes. Needed by document-service to serve document download links. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -92,6 +92,19 @@ func (s *S3) storeWithDirectUpload(path string, content io.Reader, contentType s
|
|||||||
return req.URL, nil
|
return req.URL, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PresignURL generates a presigned download URL for an existing object.
|
||||||
|
// The URL is valid for 15 minutes.
|
||||||
|
func (s *S3) PresignURL(ctx context.Context, key string) (string, error) {
|
||||||
|
req, err := s.presigner.PresignGetObject(ctx, &s3.GetObjectInput{
|
||||||
|
Bucket: aws.String(s.bucket),
|
||||||
|
Key: aws.String(key),
|
||||||
|
}, s3.WithPresignExpires(15*time.Minute))
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return req.URL, nil
|
||||||
|
}
|
||||||
|
|
||||||
// New creates a new S3 storage instance using the upload manager
|
// New creates a new S3 storage instance using the upload manager
|
||||||
// This loads AWS config from the default locations and is suitable for most use cases
|
// This loads AWS config from the default locations and is suitable for most use cases
|
||||||
func New(bucket string) (*S3, error) {
|
func New(bucket string) (*S3, error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user