From ed571691243176f214dc8eb5b31ab445a407e0fa Mon Sep 17 00:00:00 2001
From: Johan de Klerk <jdeklerk00@gmail.com>
Date: Thu, 3 Feb 2022 14:17:16 +0200
Subject: [PATCH] S3: Set expiry duration

---
 s3/s3.go | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/s3/s3.go b/s3/s3.go
index 9784db8..6cde7c0 100644
--- a/s3/s3.go
+++ b/s3/s3.go
@@ -249,14 +249,14 @@ func (s SessionWithHelpers) GetObjectMetadata(bucket string, fileName string, is
 }
 
 // MoveObjectBucketToBucket - Move object from one S3 bucket to another
-func (s SessionWithHelpers) MoveObjectBucketToBucket(sourceBucket string, destinationBucket string, sourceFileName string, destinationFileName string, isDebug bool) error {
+func (s SessionWithHelpers) MoveObjectBucketToBucket(sourceBucket string, destinationBucket string, sourceFileName string, destinationFileName string, settings S3UploadSettings) error {
 
-	err := s.CopyObjectBucketToBucket(sourceBucket, destinationBucket, sourceFileName, destinationFileName, isDebug)
+	err := s.CopyObjectBucketToBucket(sourceBucket, destinationBucket, sourceFileName, destinationFileName, settings)
 	if err != nil {
 		return err
 	}
 
-	err = s.DeleteObjectFromBucket(sourceBucket, sourceFileName, isDebug)
+	err = s.DeleteObjectFromBucket(sourceBucket, sourceFileName)
 	if err != nil {
 		return err
 	}
@@ -265,7 +265,7 @@ func (s SessionWithHelpers) MoveObjectBucketToBucket(sourceBucket string, destin
 }
 
 // CopyObjectBucketToBucket - Copy an object from one S3 bucket to another
-func (s SessionWithHelpers) CopyObjectBucketToBucket(sourceBucket string, destinationBucket string, sourceFileName string, destinationFilename string, isDebug bool) error {
+func (s SessionWithHelpers) CopyObjectBucketToBucket(sourceBucket string, destinationBucket string, sourceFileName string, destinationFilename string, settings S3UploadSettings) error {
 	// copy the file
 	copySource := url.QueryEscape(sourceBucket + "/" + sourceFileName)
 	copyObjectInput := &s3.CopyObjectInput{
@@ -273,6 +273,12 @@ func (s SessionWithHelpers) CopyObjectBucketToBucket(sourceBucket string, destin
 		CopySource: aws.String(copySource),          // source path (ie: myBucket/myFile.csv)
 		Key:        aws.String(destinationFilename), // filename on destination
 	}
+
+	if settings.ExpiryDuration != nil {
+		expiry := time.Now().Add(*settings.ExpiryDuration)
+		copyObjectInput.Expires = &expiry
+	}
+
 	_, err := s.S3Session.CopyObject(copyObjectInput)
 	if err != nil {
 		return err
@@ -288,7 +294,7 @@ func (s SessionWithHelpers) CopyObjectBucketToBucket(sourceBucket string, destin
 }
 
 // DeleteObjectFromBucket - Delete an object from an S3 bucket
-func (s SessionWithHelpers) DeleteObjectFromBucket(bucket string, fileName string, isDebug bool) error {
+func (s SessionWithHelpers) DeleteObjectFromBucket(bucket string, fileName string) error {
 	// delete the file
 	deleteObjectInput := &s3.DeleteObjectInput{
 		Bucket: aws.String(bucket),
-- 
GitLab